将字符存储在一个整数变量中

问题描述:

困惑,为什么当我编译时,当hold是一个整数时,它会起作用?将字符存储在一个整数变量中

char value = 'p'; 
int hold = value; 
printf("%c", hold); 
+0

做一些关于ASCII的研究:) – Gam

+0

'printf'的'%c'需要'int'。见[printf](http://en.cppreference.com/w/c/io/fprintf) – BLUEPIXY

+1

因为''p''是一个整数,所以你应该问为什么'char value ='p''起作用! –

首先,在

int hold = value; 

执行隐式转换从charint

其次,在

printf("%c", hold); 

%c符意味着什么作为其转换为char并打印为符号。

+0

'%c'说明符告诉'printf()'使_expect_参数的类型为'char';没有进行转换(外部或默认参数促销),以及不匹配的转换说明符和参数导致未定义的行为。值得注意的是'char'是一个整数类型。 –

+2

@DavidBowling'%c'期望类型为'int'的参数。 – BLUEPIXY

+0

@ BLUEPIXY--哎呀,你是对的;有一段时间我没有看过标准的这部分内容,但是现在我看到了'int'实际上被转换为'unsigned char'。 –