程序书写有错,则别人无法回答你的问题。
猜: flaot f=2.0; 应是: float f=2.0;
猜: printf("<1>: %f\n", 应是: printf("<1>: %d\n",
猜: printf("<1>: %f\n",(a+2, 或是:printf("<1>: %f\n",(float)(a+2,c+2));
猜:printf("<3>: %d\n",(!(a==0),f!=0&&c=="A")); 应是:printf("<3>: %d\n",(!(a==0),f!=0&&c=='A'));
------------
你需要掌握关于 “逗号表达式” 的 知识。这里的6个输出语句里的表达式都是 逗号表达式。
逗号表达式 的输出值,等于 逗号表达式 中 最后一个表达式 的值,即最右一个表达式 的值。
假定 float f=2.0; char c='a';
printf("<1>: %d\n",(a+2,c+2)); 它等价于 printf("<1>: %d\n",(c+2)); 输出 'a'+2 的值 99。
printf("<2>: %d\n",(a<=c,c>=c)); 它等价于 输出 c>=c ,因 条件成立,输出 真,真就是 1, 输出 1。
printf("<3>: %d\n",(!(a==0),f!=0&&c=='A')); 它等价于 输出 f!=0&&c=='A' ,由于c=='a', 所以 c=='A' 为假, 表达式得假,假就是 0,输出0。
printf("<4>: %d\n",((a>0?0:1),(a<0?1:2))); 它等价于 输出 a<0?1:2。 这是“3目运算”,a小于0为假,输出 冒号后的值 2。 输出2。
printf("<5>: %d\n",(f+2.5,a=10)); 等价于 输出 “赋值表达式” a=10 的值,输出10。
printf("<6>: %d\n",(a,c,f,5)); 等价于 输出 最右表达式 5 的值,输出 5。
答案:
<1>: 99
<2>: 1
<3>: 0
<4>: 2
<5>: 10
<6>: 5