我正在学习C。当我经过指针时,我注意到一些奇怪的行为,我无法理解。当将字符指针转换为整数指针时,整数指针持有一些怪异的值,在与char或char ascii代码合理相关的地方没有。但是,在用'%c'打印强制转换变量时,它会打印正确的char值。
用'%d'打印会给出一些未知的数字。
printf("%d", *pt); // prints as unknown integer value that too changes for every run
Run Code Online (Sandbox Code Playgroud)
但是当打印为'%c'时
printf("%c", *pt); // prints correct casted char value
Run Code Online (Sandbox Code Playgroud)
整个程序:
int main() {
char f = 'a';
int *pt = (int *)&f;
printf("%d\n", *pt);
printf("%c\n", *pt);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请说明char到int指针强制转换的工作原理,并说明输出值。
编辑:
如果我对程序进行以下更改,则输出将如预期的那样。请也解释一下。
#include <stdio.h>
int main() {
char f = 'a';
int *pt = (int *)&f;
printf("%d\n", *pt);
printf("%c\n", *pt);
int val = (int)f;
printf("%d\n", val);
printf("%c", val);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
97 …Run Code Online (Sandbox Code Playgroud)