将字符存储在一个整数变量中
困惑,为什么当我编译时,当hold是一个整数时,它会起作用?将字符存储在一个整数变量中
char value = 'p';
int hold = value;
printf("%c", hold);
首先,在
int hold = value;
执行隐式转换从char
到int
。
其次,在
printf("%c", hold);
的%c
符意味着什么作为其转换为char
并打印为符号。
'%c'说明符告诉'printf()'使_expect_参数的类型为'char';没有进行转换(外部或默认参数促销),以及不匹配的转换说明符和参数导致未定义的行为。值得注意的是'char'是一个整数类型。 –
@DavidBowling'%c'期望类型为'int'的参数。 – BLUEPIXY
@ BLUEPIXY--哎呀,你是对的;有一段时间我没有看过标准的这部分内容,但是现在我看到了'int'实际上被转换为'unsigned char'。 –
做一些关于ASCII的研究:) – Gam
'printf'的'%c'需要'int'。见[printf](http://en.cppreference.com/w/c/io/fprintf) – BLUEPIXY
因为''p''是一个整数,所以你应该问为什么'char value ='p''起作用! –