首页 > 解决方案 > 当“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

标签: ctype-conversion

解决方案


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

aa它是存储字符串的位置地址。也就是说,只有一份副本aa存储在“仅就绪”部分中,其地址存储在变量中ab

由于int不应该保存地址,编译器会抛出警告。


推荐阅读