【问题标题】:what happed whene "aa" string assign to a integer variable?当“aa”字符串分配给整数变量时发生了什么?
【发布时间】:2019-11-06 06:49:22
【问题描述】:

我得到了下面的代码,我从两个变量中得到了相同的值,但是赋值 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

【问题讨论】:

  • 这个警告几乎总是被认为是一个错误。
  • 你能告诉我什么是错误,什么是警告?你怎么说警告被认为是错误的。
  • 错误:您做的完全错误,程序无法编译。警告:你做错了什么,但如果你知道自己在做什么,你可能会侥幸逃脱。
  • 'KP Creations' 大约一个小时前问了同样的问题。

标签: c type-conversion


【解决方案1】:

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

它是存储字符串aa的位置地址。这只是aa 的一份副本存储在“ready-only”部分,其地址存储在ab 变量中。

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

【讨论】:

  • a 和 b 变量都打印相同的地址。怎么可能?
  • @HemaKrish 只有一份aa 被存储为只读部分的一部分。
猜你喜欢
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2017-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多