1.问题:
输入两个整数a和b,计算a+b的和。
2.解答:
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
scanf()函数返回值分为3种:
(1)返回正整数。表示正确输入参数的个数。
(2)返回整数0。表示用户的输入不匹配,无法正确输入任何值。
(3)返回-1。表示输入流已经结束。
关于~的作用解析:
(1)在Windows下,用户按下CTRL+Z(会看到一个^Z字符),会停止输入流,scanf会返回-1。
(2)-1的补码为11111111 11111111 11111111 11111111 4个字节。
(3)~是C语言中的按位取反,因此~(-1)结果为00000000 00000000 00000000 00000000刚好为整数0的补码。
(4)当输入Ctrl+Z时,scanf会返回-1,while(~-1)==while(0),0为假,退出while循环。
3.代码:
#include<stdio.h>//头文件
int main()//主函数
{
int a=0,b=0;//定义整型变量
while(~scanf("%d%d", &a, &b)) //键盘输入
{
printf("%d\n",a+b);
}
return 0;//函数返回值为0
}
4.编译结果:
输入:1 2
输出:3