int i=2,j=2,k=0;int a;a=++i||++j&&k++;printf("%d,%d,%d",i,j,k);输出的结果是什么?a的运算过程是怎样 int i=1,j=1,k=2; if(j--||k++&a...

\u6c42\u89e3\u91ca: void main( ) { int i=0,j=1,k=2; if ((++i || ++j) && k++) printf("%d,%d,%d",i,j,k); }

\u6216\u8fd0\u7b97"||"\u7684\u65f6\u5019\uff0c\u5982\u679c\u524d\u9762\u7684\u7ed3\u679c\u662f\u975e\u96f6\u503c\uff0c\u540e\u9762\u7684\u5c31\u4e0d\u53bb\u7ba1\u5b83\u4e86\uff0c\u53cd\u4e4b\u5c31\u8981\u7ee7\u7eed\u770b\u540e\u9762\u7684\u3002\u4e0e\u8fd0\u7b97"&"\u7684\u65f6\u5019\uff0c\u5982\u679c\u524d\u9762\u7684\u7ed3\u679c\u662f\u96f6\uff0c\u90a3\u4e48\u540e\u9762\u7684\u5c31\u4e0d\u7b97\u4e86\uff0c\u53cd\u4e4b\u5c31\u8981\u7ee7\u7eed\u770b\u540e\u9762\u7684\u3002\u518d\u6765\u770b\u4f60\u7684\u4f8b\u5b50\uff1a++i\u7684\u7ed3\u679c\u662f1\uff0c\u90a3\u4e48++j\u5c31\u4e0d\u4f1a\u88ab\u6267\u884c\uff0c\u6240\u4ee5(++i || ++j)\u7684\u7ed3\u679c\u662f1(i\u52a0\u4e861\uff0cj\u7684\u503c\u6ca1\u53d8)\uff0c\u975e\u96f6\u503c\uff0c\u7ee7\u7eed\u770b\u540e\u9762\u7684k++\uff0c\u4ecd\u7136\u975e\u96f6\uff08\u6b64\u65f6k\u7684\u503c\u52a0\u4e861\uff09\uff0c\u6240\u4ee5\u6267\u884c\u540e\u9762\u7684\u6253\u5370\u8bed\u53e5\uff0c\u7ed3\u679c\u5c31\u662f1\uff0c1\uff0c3

\u5148
\u6309\u4f18\u5148\u7ea7\u6765\u8bf4
&&
\u5927\u4e8e
||
\u6240\u4ee5
j--||k++&&++i
\u76f8\u5f53\u4e8e
j--
||
(k++
&&
++i)
\u800c
a
||
b
\u4e2d\u53ea\u8981\u4e00\u4e2a\u4e3a\u771f\uff0c\u5219
a
||
b\u4e3a\u771f\uff0c\u6240\u4ee5\u5f53a\u4e3a\u771f\u7684\u65f6\u5019\uff0c\u5c31\u80fd\u786e\u5b9a
a||b\u4e00\u5b9a\u4e3a\u771f\uff0c\u6b64\u65f6\u4e0d\u518d\u8ba1\u7b97
b\u4e86\u3002
\u6240\u4ee5
\u7531\u4e8e
j--\u662f\u5148\u4f7f\u7528j\u7684\u503c\uff0c\u7136\u540e\u6539\u53d8j\u7684\u503c\uff0c\u7531\u4e8ej=1\uff0c\u6240\u4ee5\u4e3a\u771f\uff0c\u7136\u540ej\u53d8\u62100\u4e86
\u7531\u4e8e
j--\u4e3a\u771f\u4e86\uff0c\u5219(k++
&&
++i)
\u4e0d\u518d\u5224\u65ad\u6267\u884c\u4e86\uff0c\u6240\u4ee5i\u548ck\u7684\u503c\u4e0d\u53d8\u3002
\u6240\u4ee5
\u7ed3\u679c\u4e3a
1,0,2

这道题考的是逻辑运算的问题。
首先应该进行++i的运算,i=2则++i=3;
之后++i||(或)(++j&&(与)k++)这里++j&&k++是逻辑运算应该放在一起,得到的值是一个boolean值
把(++j&&k++)看成一个表达式A
即++i||A ++i=3 也就是3||A
逻辑“或”运算,或运算两边如果有一个为真则为真.
所以a=1; 而表达式A(即++j&&k++)则没有执行。
如果不明白可以追问。
希望我的解答对你有所帮助。

在这里给你说下运算过程:
++i 后,i 是3就不用解释了,
为什么j =2,k =0, a = 1;在这里给人讲解下:
首先是优先级问题,++ 运算高,所以i = 3;
然后是 ||和&& 的优先级,这两个优先级是一样的,而且运算规则是从左往右,++i||++j在这里 ,执行++i后,为真,所以 ||后面的已经不再执行,你要知道运算符||的作用是有一个为真,即为真,而且后面即使是假也不再执行。 

扩展阅读:j int med res ... int a[2][3] ... 求解方程计算器 ... int i j m 0 ... int a[3][4] ... int i 010 j 10 ... int n 3 i j k ... int a[10] ... int j mol sci ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网