在下面的代碼,如何顯示字符數組?
#include<stdio.h>
int main(){
char string[] = {1, 2, 3};
char* my_pointer = string;
printf("%c", *my_pointer);
}
上午期待ASCII字符'1'
將顯示在屏幕上。
ASCII字符'1'
是49
用二進制表示爲00110001
在下面的代碼,如何顯示字符數組?
#include<stdio.h>
int main(){
char string[] = {1, 2, 3};
char* my_pointer = string;
printf("%c", *my_pointer);
}
上午期待ASCII字符'1'
將顯示在屏幕上。
ASCII字符'1'
是49
用二進制表示爲00110001
你需要給它字符初始化時:
char string[] = {'1', '2', '3', '\0'};
,或者你可以初始化使用字符串
char string[] = "123";
當你使用數字如
char string[] = {1, 2, 3};
它將打印對應於數字1的ASCII字符(很可能不會產生任何輸出)。
如果你想用數字來初始化,你必須做到:
char string[] = {49, 50, 51};
爲什麼我需要給出''1''而不是'1'。 C是一種鬆散類型的語言。'1'必須被轉換爲'1',因爲它是'字符串'是'char' array – overexchange
語法''1'對應於等於數字49的字符'1'。使用字符的語法,例如字母a'''' – 4386427
哦,你的意思是'SOH'字符在ASCII圖表中的值爲'1',所以不能打印 – overexchange
你行
char string[] = {1, 2, 3};
聲明一個有三個整數文字初始化3個char
值的數組。要使用char文字進行初始化,請使用如下的單引號運算符'
。
char string[] = {'1', '2', '3', '\0'};
注意,初始化你需要包括空終止,因爲我在上面所做的數組,當否則你到printf
調用將導致未定義行爲。在你對上述答案之一的評論中,你問
爲什麼我需要給'1'而不是1. C是一個鬆散類型的語言。 1必須被鑄造類型爲「1」,因爲它是字符串是字符數組
記住一個char
引擎蓋下是一個數字的只是一個表示; '字符字面'語法只是語法糖,它允許您以更加語義的方式創建字符常量。
char variable1 = 49;
char variable2 = '1';
在這個例子中,這兩個語句是完全等價的。如果C應該按照你建議的方式施放,是否應該將49
轉換爲4,9或者可能是字符串「49」?這不清楚。 C是一種懶惰的語言 - 它不會做任何聰明的技巧來幫助你,所以當你設置一個字符值爲49時,它會分配數值。
1不等於49 –
@ChristopherSchneider錯字。我期待'1'被類型轉換爲''1'',因爲'string'是'char'數組 – overexchange
沒有錯字。您正在輸入一個值爲1的字符,並期望打印49('1')。 –