C语言的高手帮我解决一下难题,不诚心帮人的别进!!!

来源:百度知道 编辑:UC知道 时间:2024/05/08 02:48:17
for(i=0,j=0;i<3;j++,j=(j%4)?j:0,i+=!(j%4)) 这句话如何解释??
原型是for(i=0;i<3;i++)
for(j=0;j<4;j++)两条语句合并的,二维数组题目,i是行,j是列,请详细说明一下。。谢谢!!
你的回答我都知道,总共12个元素,当j初值为0时,i+=!(j%4)运行吗?i=i+1???这里我弄不清楚。。

j=(j%4)?j:0 这是个三目运算符
<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则求表达式2 的值并把它作为整个表达式的值; 如果表达式1 的值为假, 则求表达式3 的值并把它作为整个表达式的值.

如果j是4了,那么就自动变成0,否则还是原来的数,也就是j在0,1,2,3这几个数之间变化,就是每一行到头了,就该一下行的第0个数了。
i+=!(j%4)就是用来判断是不是该下一行的

?:运算符..原形是:表达式1?表达式2:表达式3
意思是当表达式1成立是执行表达式2,否则执行表达式3.
for(表达式1;表达式2;表达式3)

这里就是要利用一个循环判断其表达式2是否成立.
我回答一下你的补充吧