#include<stdio.h>
int main(){
printf("%d\n", (int)('a'));
printf("%d\n", (char)(97));
}
为什么上面的程序会给出输出
97
97
代替
97
a
#include<stdio.h>
int main(){
printf("%d\n", (int)('a'));
printf("%d\n", (char)(97));
}
为什么上面的程序会给出输出
97
97
代替
97
a
#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);
}
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
}
在第二次调用中,您尝试使用转换说明符将字符输出为整数%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.
因为你需要在最后一行写 %c,而不是 %d。
printf("%d\n", (char)(97));
至
printf("%c\n", 97);
您想要的是打印一个字符,但是在您的第二个 printf 调用中您指定 format%d而不是%c,然后 printf 将您输出(char)(97)为整数。