70,037
社区成员
发帖
与我相关
我的任务
分享
#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,应该是当成个数字对待的吧.....
VC++6.0 这样写 a="a"与a="abc"会报错 那个 a='abc' 我也觉得是这么来的,一个a在VC中占一个字节 0110 0001 同理b为0110 0010 c为0110 0011 然后再合并就成了6382179