[英]Unexpected output when printing element of array in c
我正在創建一個簡單的C程序,以下程序的輸出應為2,但我得到50,不知道為什么(我是C的新手),請讓我知道我在哪里缺少
#include<stdio.h>
int main(int argc, char** argv) {
int a[4]={'1','2','2','\0'};
printf("The value of a is %d",a[1]);
return 0;
}
您使用ascii字符代碼初始化了數組。 '2'
具有整數值50。
初始化為
int a[4]={1,2,2,0};
如果您希望它包含整數1,2,2,0。 要么
#include<stdio.h>
int main(int argc, char** argv) {
char a[4]="121";
printf("The value of a is %c",a[1]);
return 0;
}
如果您想要一個可以當作字符串的字符數組。 (請注意此處使用%c
格式說明符。)
50
是ASCII碼'2'
。
如果要修復,請將'2'
替換為2
。
當使用字符文字(例如'2'
C實際上將它們視為整數類型。 使用%d
格式說明符進行打印時,您要告訴C將值打印為整數。
如果要保持這樣的數組元素: '2'
,則需要將printf格式更改為%c
才能在控制台中得到2
。
當您寫int a[4]={'1','2','2','\\0'};
您實際上是使用數字1和2的ASCII碼初始化數組的。這是因為您將它們括在單引號中,從而使它們成為字符而不是整數。 因此,數組實際上取值int a[4]={49,50,50,0};
要更正它,您應該編寫不帶引號的整數:
int a[4]={1,2,2,0};
還要注意,整數數組不需要以'\\0'
結尾。 這僅適用於字符數組。
這條線
int a[4]={'1','2','2','\0'};
告訴編譯器創建一個長度為4的整數數組,並將右邊的花括號中的整數放入其中。
在字符C
為1字節的整數, 1
是的一個字符1
,這意味着整數值的它的ASCII碼,即50。因此,一個陣列的第一元素獲得的50的值。
要解決你應該寫
int a[4]={1,2,2,0};
請記住, 0
不能用作數組結束標記,因為它只是一個數字。
如果您想獲得122
輸出,請執行
char a[4]={'1','2','2','\0'};
printf("The value of a is %s",a);
因為C
中的字符串是帶有0
作為終止符號的字符數組。
您也可以讓編譯器為您計算值
char a[]={'1','2','2','\0'};
您要分配的字符不是整數:
注意
'2' means char use %c
2 manes int use %d
"2" means string. use %s
都不同:
在您的代碼中,您可以喜歡打印2:
int main(int argc, char** argv) {
char a[4]={'1','2','2','\0'};
printf("The value of a is %c",a[1]);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.