![](/img/trans.png)
[英]Why does following C code print 45 in case of int 45 and 36 in case of STRING and ASCII value of CHAR?
[英]Why does i print a value of 3 in the following code?
以下代碼的輸出為: 3 2 15
我期待2 2 15
為什么是這樣?
#include <stdio.h>
int main() {
int a[5] = { 5, 1, 15, 20, 25 };
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d", i, j, m);
return 0;
}
增量/減量運算符實際上會更改對象的值,而不僅僅是返回結果值。 在行m=a[i++];
你又增加了i
。
因為您將其遞增兩次:
i=++a[1]; // i = 2
j=a[1]++;
m=a[i++]; // i = 3
printf("%d %d %d",i,j,m);
我希望它能為您提供幫助。
#include<stdio.h>
int main()
{
int a[5]={5,1,15,20,25};
i=++a[1]; // i = 2
j=a[1]++; // j = 2
m=a[i++]; // m = 15, i = 3
printf("%d %d %d",i,j,m);
return 0;
}
碼
#include <stdio.h>
int main() {
int a[5] = { 5, 1, 15, 20, 25 };
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d", i, j, m);
return 0;
}
讓我們逐步進行此操作。
a [1]是1
我是++ 1就是... 2
m是a [i],即a [2],即... 15
在此語句之后,執行了i ++,因此
m = 15之后
我變成3
這些值使用printf打印
讓我們逐步進行:
#include <stdio.h>
int main() {
int a[5] = { 5, 1, 15, 20, 25 };
i = ++a[1]; // a[1] is incremented, becomes 2, i gets this value 2
j = a[1]++; // j gets a[1] which is 2, then a[1] is incremented and becomes 3
m = a[i++]; // m gets a[2] which is 15, i is incremented and becomes 3
printf("%d %d %d", i, j, m); // prints 3 2 15
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.