设有定义“int j,i;”,则执行“j=(i=1,1+9)>9?i++||++i:++i;”后,i,j的值为() 设有int a=1,b=9则表达式a--||b++,++a+...

\u8bbe\u6709\u5b9a\u4e49int a[]={1,3,5,7,9},*p=a; while(*p!=3) p++; \u7ed3\u679c\u4e3a7\u7684\u8868\u8fbe\u5f0f\u662f\uff1a *(p+2\uff09\u80fd\u5426\u8be6\u7ec6\u89e3\u91ca\u4e0b

int a[]={1,3,5,7,9},*p=a; //\u5b9a\u4e49\u4e00\u4e2a\u6570\u7ec4a\uff0c\u5171\u4e94\u4e2a\u5143\u7d20\uff1b\u540c\u65f6\u5b9a\u4e49\u4e00\u4e2a\u6307\u9488p\u6307\u5411\u6570\u7ec4a\u7684\u9996\u5730\u5740
p -> a[0]=1 \u5373p\u662fa[0]\u7684\u5730\u5740
p+1 -> a[1]=3 p+1\u662fa[1]\u7684\u5730\u5740\uff0c\u4e0b\u540c
p+2 -> a[2]=5
p+3 -> a[3]=7
p+4 -> a[4]=9
while(*p!=3) p++; //*p\u662f\u53d6\u5730\u5740\u4e2d\u7684\u5185\u5bb9\uff08\u6570\u636e\uff09\uff0c\u5f53*p\u4e0d\u662f3\u65f6\uff0cp++\u5b8c\u6210\u5411\u540e\u79fb\u52a8\u4e00\u4e2a\u6570\u636e

\u5f53*p==3\u65f6\uff0cp\u5f53\u524d\u503c\u4e3a \u539fp+1 \uff0c\u5373\u6307\u5411a[1]
\u6b64\u65f6\u7684p +1\u6307\u5411a[2]=5
\u6240\u4ee5\uff0c\u6b64\u65f6\u7684p +2\u6307\u5411a[3]=7
\u5373\uff1a*(p+2\uff09==7

\u5176\u5b9e\u4f60\u81ea\u5df1\u8bd5\u4e00\u4e0b\u5c31\u77e5\u9053\u4e86....

\u8bed\u8a00\u4e0d\u901a\u4e0d\u77e5\u9053\u5f97\u5230\u7684\u7ed3\u679c\u662f\u4e0d\u662f\u4e00\u6837\uff0c\u6211\u7528js\u5f97\u5230\u7684\u7ed3\u679c\u5206\u522b\u662f1,10,9

先执行(i=1,1+9)>9,()表达式的值,是()内最右边式子的结果,所以是10,10>9,所以第2步是执行i++||++i.
因为之前已执行了i=1,所以i++的取值是1,取值后将i变成2,所以i++||++i的左边是逻辑真值,根据编译器的优化,右边的++i不再计算,所以i++||++i的最终结果是真,即1,所以j=1

扩展阅读:二根线接三孔插排图 ... intj 中文翻译 ... 若有定义int a 8 b 5 c ... 若有定义int i 7 ... int a[10] ... 设有以下定义int a 0 ... int a[3][2] ... 在定义int m ... 定义如下变量和数组int j ...

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