#include"stdio.h" main() {int i=1,j=1,k=2; if((j++||k++)&&i++)printf("%d,%d,%d",i,j,k);}是什么意思

如题所述

逻辑或“ || ” 只要有一个为真则为真
假如: “||”左边为真时,“||”后面的语句不再执行 < 语句为真 >
“||”左边为假时,继续判断“||”后面的值 若为真则真 若为假则假
==》 因为 (j++)为真 所以 (k++)就不再执行 ==》j=2; k=2;

逻辑与“ && ”只要有一个为假则为假
假如: “&&”左边为假时,“&&”后面的语句不再执行 < 语句为假>
“&&”左边为真时,继续执行“&&”后面的值 若为真则真 若为假则假
==》因为( j++ || k++ )为真 继续执行(i++) ==》i=2
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-22
楼主想问什么?
这句话的意思就是说如果(j++||k++)&&i++的运算结果输出i,j,k的结果啊。
输出结果应该为2,2,2。
i和j为2的原因是因为i++和j++的结果。
k仍然为2是因为或运算短路的结果。
(j++||k++)当j++已经不为0时,k++这句已经不会执行了,因为其整体结果已经决定了。
这中现象叫短路:)
第2个回答  2011-04-22
#include"stdio.h"
main()
{
int i=1,j=1,k=2;
if((j++||k++)&&i++) //在计算j++||k++时,第一个操作数j++为真(非零),C就不计算第二个操作数k++,因此k的值不变。
printf("%d,%d,%d",i,j,k);//输出i,j,k的值,即2,2,2
}
第3个回答  2011-04-22
输出结果为:2,2,2
第4个回答  2018-06-18
遇到这种选择题时,就可以直接将其复制粘贴到C++上将其运行得出答案

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答