69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main(void)
{
/* 将单个字符赋值给整形变量,结果为字符的ASCII值 */
int a = 'a';
printf("a = %d\n", a);
/* ?这里如何解释 */
a = 'abc';
printf("a = %d\n", a);
/* 将字符串赋值给整形变量,结果为字符串的地址值 */
a = "a";
printf("a = %d\n", a);
a = "abc";
printf("a = %d\n", a);
return 0;
}
#include <stdio.h>
int main(void)
{
int a = 'a'; //type promotion
printf("a = %d\n", a);
a = 'abc';
//printf("a = %d\n", a);
printf("a = %x\n", a); //616263, 0x61 == 97 == 'a'
//it's okay to convert char const* to int in C
a = "a";
printf("a = %d\n", a);
a = "abc";
printf("a = %d\n", a);
return 0;
}
int a = 'a';
有效。
#include <stdio.h>
union un
{
int i;
char c[4];
};
int main(void)
{
/* 将单个字符赋值给整形变量,结果为字符的ASCII值 */
int a = 'a';
printf("a = %d\n", a);
/* ?这里如何解释 */
union un b;
b.i = 'abc';
printf("b.i = %d\n", b.i);
printf("b.c = %c %c %c %c\n", b.c[0], b.c[1],b.c[2],b.c[3]);
/* 将字符串赋值给整形变量,结果为字符串的地址值 */
a = "a";
printf("a = %d\n", a);
a = "abc";
printf("a = %d\n", a);
return 0;
}
运行结果:
a = 97
b.i = 6382179
b.c = c b a (非Ascii符号)
a = 4206665
a = 4206667
这个输出就清楚了。
#include <stdio.h>
int main(void)
{
printf("%x\n", 'aabc');
return 0;
}
打印了61616263,应该是当成个数字对待的吧.....