快速解决战斗/。 scanf("%d",&a) == 1 的副作用
c语言吧
全部回复
仅看楼主
level 10
w15tp 楼主
如题,根据我刚刚发的那个提问贴,我突然想到/
在这个语句里
scanf("%d",&a) == 1
不就是把 scanf 的返回值 比较吗/。 当scanf 读入一个
正确的
数据,返回值 为1 并比较 ==1;
就会进入循环,为了验证,我就这样写。
#include<stdio.h>
int main(void)
{
int a;
int b;
while(b = scanf("%d",&a) == 1)
{
printf("b = %d; a = %d\n",b,a);
}
return 0;
}
然后发现 b 值 无论如何都 为 1 ; 于是我就怀疑 是 scanf("%d",&a) == 1
的副作用出现了。。 求解。。
2014年03月31日 03点03分 1
level 13
while(b = scanf("%d",&a) == 1)
while((b = scanf("%d",&a) )== 1)
2014年03月31日 03点03分 2
level 13
b = scanf("%d",&a) == 1// 优先级的问题,判断scanf("%d",&a) == 1,然后值赋给b
2014年03月31日 03点03分 3
level 10
w15tp 楼主
好吧,意思就是说,加上括号就是 先计算 b的数值,然后比较,不加就是先比较,然后把比较的结果给 b
2014年03月31日 03点03分 4
level 10
w15tp 楼主
这东西没有结帖的设置,真遗憾。
2014年03月31日 03点03分 5
level 10
w15tp 楼主
大婶。你们竟然没有说 scanf 中只要 第一个是数字 b 就永远唯一、
因为 scanf 会认为他读入了正确的数据,。至于后面的。完全被无视了。、
2014年03月31日 16点03分 6
1