C - 当字符串分配给整数变量时"aa"发生了什么?



我得到了下面的代码,我从两个变量中得到了相同的值,但赋值b抛出了一个错误,打印后的值是多少,两个变量的值是134513904这个是什么

int a=(int)"aa",b="aa";
printf("%d,%d",a,b);
if.c: In function ‘main’:
if.c:6:19: warning: initialization makes integer from pointer without a cast [enabled by default]
cast [enabled by default]
int a=(int)"aa",b="aa";
^
134513904,134513904
shell returned 19

然后:printf("%s:%s",a,b(;它打印字符串=>aa:aa

两个变量的值都是134513904这个是什么

它是存储字符串aa的位置的地址。即只有aa的一个副本存储在"仅就绪"部分,其地址存储在ab变量中。

由于int不应该保存地址,所以编译器正在抛出警告。

相关内容

最新更新