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
存储在“仅就绪”部分中,其地址存储在变量中a
。b
由于int
不应该保存地址,编译器会抛出警告。
推荐阅读
- java - 为双值java保留尾随零
- javascript - Javascript 中的 Midi/二进制文件解码
- sql - 如何在 group by 中使用 case 表达式和 min()
- excel - Angular / Typescript 从 url 读取 Excel 文件
- javascript - 管道作为正则表达式中的分隔符
- excel - 在vba中查找对象范围的方法失败
- python - 在 Python 中转换 excel 日期时出错 - 如果 np.isnan(date): TypeError: Not implemented for this type
- java - 将 Java 库作为子模块添加到 Android 项目中会导致找不到库错误
- c# - 如何重复游戏对象的运动?
- javascript - 如何在 K6 中为函数应用迭代条件