C语言菜鸟问题

发布网友 发布时间:2022-04-23 06:39

我来回答

5个回答

热心网友 时间:2022-05-13 07:19

看了前面几位说的,感觉有点乱,这么给你说应该会让你更加明白点:
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);

其中,++i,--i,i++,i--;
这是逗号表达式,执行顺序为从右向左,++i,会先i自增1,然后作为++i这个表达式的返回值;对于i--,在基础的时候就应该知道C程序是用分号“;”分割每条语句的,那么整个的printf()就是一条语句,所以i--这个表达式会先返回i本身的值,然后再该条完整语句结束后,再自减1;

对于改到题目:首先执行运算过程最右面的
i--返回值为8,i的值也为8,
然后运算i++返回值为8,i的值也为8,
在执行--i先i自减1,返回值为7,i的值也变为7,
再执行++i先字加1,返回值8,i的值也为8,
但输出还是从左向右依次输出,
所以输出为8
7
8
8;
输出之后在执行
i
=
i
-
1;
i
=
i
+
1;

热心网友 时间:2022-05-13 08:37

printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
首先的是最后面的i--,他的值给最后一个%d=8,第二个是7(等一下i的值才是8,因为后置自增的问题)
以上这是满意答案所说。
我刚才在linux下分别用GCC
和G++编译,得出的结果都是
8
7
7
8;可是在windows下VC的编译结果确是8
7
8
8;这个问题就出在i++,这个先用后加,到底在什么之后加,windows
VC测试是在整条语句,即分号之后才加1,而linux下无论是GCC还是G++编译,都是执行完表达式i++之后马上就自增一,然后去执行i--;

难道我说的不对么?补充的这些有问题?亲自测试的。。。我的Q
2854934,哪里有问题你提出来。

热心网友 时间:2022-05-13 10:11

D
由于数组从0开始计数,所以只能记到a[0][3],a[0][4]是非法的!!
注意从0开始计数就可以啦~~~

热心网友 时间:2022-05-13 12:03

D
因为
int a[3][4];
实际上有
a[0][0]
a[0][1]
a[0][2]
a[0][3]

a[1][0]
a[1][1]
a[1][2]
a[1][3]

a[2][0]
a[2][1]
a[2][2]
a[2][3]

热心网友 时间:2022-05-13 14:11

d
只有d下标越界
a相当于a[0][2]c相当于a[2][0]
表达式可以作下表
变量也可以

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com