#include<stdio.h>
int main(){
printf("%d\n", (int)('a'));
printf("%d\n", (char)(97));
}
為什么上面的程式會給出輸出
97
97
代替
97
a
uj5u.com熱心網友回復:
97,0x61并且'a'只是產生相同int值的不同方式(至少在基于 ASCII 的機器上)。
Andchar只是另一種整數型別,因此將值轉換為 achar不會有幫助。
要將該值列印為a,請使用%c。
#include <stdio.h>
int main(void) {
printf("%d\n", 97); // 97
printf("%d\n", 'a'); // 97
printf("%c\n", 97); // a
printf("%c\n", 'a'); // a
}
uj5u.com熱心網友回復:
在第二次呼叫中,您嘗試使用轉換說明符將字符輸出為整數%d。
printf("%d\n", (char)(97));
相反,您可以只使用轉換說明符撰寫 %c
printf("%c\n", 97);
在這種情況下,不需要鑄造。
即使你會寫也要注意這一點
printf("%c\n", (char)(97));
或者
char c = 'a';
printf("%c\n", c);
int然而,由于整數提升,第二個引數運算式將被提升為型別。
同樣在 C 整數字符常量中,如'a'具有型別int.
uj5u.com熱心網友回復:
#include<stdio.h>
int main(){
printf("%d\n", (int)('a'));
printf("%c\n", (char)(97));
}
char是整數型別(與 , 等相同int),只有范圍不同long。long long
%dprintf 整數,字符常量'a'的型別int和值97在ASCII.
您的示例中不需要強制轉換:
#include<stdio.h>
int main(){
printf("%d\n", 'a');
printf("%c\n", 97);
}
uj5u.com熱心網友回復:
您想要的是列印一個字符,但是在您的第二個 printf 呼叫中您指定 format%d而不是%c,然后 printf 將您輸出(char)(97)為整數。
uj5u.com熱心網友回復:
因為你需要在最后一行寫 %c,而不是 %d。
printf("%d\n", (char)(97));
到
printf("%c\n", 97);
uj5u.com熱心網友回復:
#include<stdio.h>
int main(){
printf("%d\n", (int)'a');
printf("%c\n", (char)97);
}
測驗它,看看它是否有效
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418560.html
標籤:
上一篇:c-復制字串的最有效方法是什么?
下一篇:#if的前處理器編譯指示優先級
