请教C语言程序设计中表达式和if语句问题。

1)请教,为什么第二个输出失败?
main()
{
printf("%d %d\n",5%2,2/3);
printf("%d %f\n",5%2,2/3); /* 此句执行失败 */
}

2)请教,为什么输出是-4?
main()
{
int n = 0, m = 1, x = 2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf("%d\n",x);
}

printf("%d %f\n",5%2,2/3); 2/3得的是整型,而在此句中要的却是单精度,因此出错。单精度即输出有小数的,而要输出有小数的答案,在C语言中规定了要除数或者被除数中要有小数,才能输出整数,正如一楼所言在2后面加(.0)就行了,还有令一种方法,就是直接把除数或者被除数其中一个小数化,即将其改为单精度比如printf("%d %f\n",5%2,(float)2/3);或者printf("%d %f\n",5%2,2/(float)3);都行。
而if则是判断()里面的语句,如果语句为真即执行后面的语句。
if(!n) x-=1; 意思是如果(!n)为真,即(!n)非零,因n=0,故!n为真。x=x-1=2-1=1. {!代表非,上面负负得正。}
if(m) x-=2; 意思是如果(m)为真,即(m)非零,因m=1,m为真,x=x-2=1-2=-1.
if(x) x-=3;意思是如果(x)为真,即(x)非零,因x=-2,m为真,x=x-3=-1-3=-4.
答案大量使用1楼的,懒得打,就是解析得更加详细点。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-08
1):printf("%d %f\n",5%2,2/3); 2/3得的是整型,而在此句中要的却是单精度,因此出错。如果要运行的话,应该这样打:printf("%d %f\n",5%2,2.0/3); 这样可以保证得到的是单精度。
2):if(!n) x-=1; 意思是如果!n为真,即非零,因n=0,故!n为真。x=x-1=2-1=1.
if(m) x-=2; 同上,m为真,x=x-2=1-2=-1.
同理,下一句,x=x-3=-1-3=-4.
呵呵。。。不知道能否看懂啊!!本回答被提问者采纳

关于C语言中条件表达式与if语句的问题
“从功能上讲,源文件中的if语句和条件表达式等价”-- 是的。编译器的问题。MS VC++ 编译器, 用条件表达式和if语句 都得到一样的正确结果。TC 编译器 功能差,不要使用 花里胡俏 的 条件表达式 代替 if语句。

求c语言高手指点关于if函数的问题
这个问题有点意思。说实话,第一种写法是不被推荐的,因为第一个 if 的括号里面的意思是:先运算 a > 0 ,再运算 b > 0 ,最后取 b > 0 的值(真或假,即非0或0)作为 if 的判断条件。逗号也是 C 语言中的运算符,在 C 语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值...

C语言中条件表达式和if语句
1、条件表达式必须返回一个值所以不能不能条用没有返回值的函数

c语言,if(表达式)语句 分号问题
这个分号 是if语句的结束符 后面的 {t=a;a=b;b=t;} 与if没有关系 你运行加不加没有什么变化 应该是a>b的情况 你可以试试a

C语言程序问题(if语句)
第一题:if(c=a)?你是想写if(c==a)吧,(c=a)是赋值表达式,其作用是将a的值付给c。而该表达式的值是赋值号右边的值,也就是a的值1,所以判断的结果为真,执行“printf("%d\\n",c);”,而变量c刚被赋值为a的值,所以显示1.要想判断相等,应用“==”。第二题:if的作用范围是其...

C语言中的if语句问题:
先解释代码运行结果为什么是:a=1,b=0,c=1 因为if里面的条件是短路条件。因为 ++a>0 是true,所以不再执行 后面的++b>0 了。因此,b的值没有变。你的选择题答案是B,因为 A 中 1 默认是int,而另外的三个变量也都是 int变量。因此表达式最后的结果也会是int型的,也就是说最后的结果是...

c语言中else if(表达式)是什么意思,怎么用的?
if — else if是当判断到有一个条件成立时,则后面的else if条件语句就不判断了,这样就节省了程序运行的时间 多个if语句是所有if条件语句都要判断,即使有满足条件的if语句后面的if条件语句也要判断多个if条件之间是并列关系

c语言选择结构if()括号里面跟表达式 常数时的意思?有例题
if(0) -- 0 就是“假”。“假”执行 else{} if (x=y+z) -- 这里是赋值语句,不是表达式,所以总是得真。于是执行printf("+++++");if (x==y+z) 里面才是条件表达式

在C语言中if(表达式)语句是怎么回事?
if(表达式)语句 如果表达式的值为非0,则执行语句1,否则跳过语句继续执行下面的语句。如果语句1有多于一条语句要执行时,必须使用{和}把这些语句包括在其中,此时条件语句形式为:if(表达式) { 语句体1; } 例如: f(x>=0)y=x; f(a||b&&c) z=a+b; C+=Z;...

C语言中的if判断问题?
if(){} 这条语句的意思是 如果if后面括号内的表达式结果为真,则执行后面大括号内的语句!if(t) { }表示如果t为真 这执行后面{}内的语句if(!t) { } 在t前面加个“!”符号,表示“非t”的意思,就是t如果为真 则“非t”为假 t如果为假 则“非t”为真 ...

相似回答