gpt4 book ai didi

C - 分配 char 文字与数组文字的行为

转载 作者:行者123 更新时间:2023-11-30 18:23:14 25 4
gpt4 key购买 nike

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
union {
int theInt;
char theChar;
} u1;

u1.theChar = 'A';
printf("%i\n", u1.theInt);
printf("%c\n\n", u1.theChar);

u1.theChar = "A";
printf("%i\n", u1.theInt);
printf("%c\n\n", u1.theChar);

}

给出输出:

65
A

45
-

在第一个赋值中,分配了字符“A”,在第二个赋值中,分配了数组“A”。为什么这两个赋值会导致不同的 union 值?

最佳答案

在你的代码中

 u1.theChar = "A";

是错误的,因为 RHS,"A" 是一个字符串文字,它归结为指向包含 char 'A' 和终止符的数组的指针无效的。不能将指针分配给 char,这是违反约束的行为。

如果代码编译并生成二进制文件,则执行将调用未定义的行为。

关于C - 分配 char 文字与数组文字的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59683851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com