c - C - 分配字符文字与数组文字的行为
问题描述
编码:
#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”。为什么这两个赋值会导致不同的联合值?
解决方案
在您的代码中
u1.theChar = "A";
是错误的,因为 RHS"A"
是一个字符串文字,它归结为指向包含 char'A'
和终止 null 的数组的指针。不能将指针分配给 a char
,这是违反约束的。
如果代码编译并生成二进制文件,则执行将调用未定义的行为。
推荐阅读
- python - 单个图中的 Pandas groupby 散点图
- typescript - 如何根据包含泛型的参数推断函数的返回类型?
- javascript - nuxt-axios 中的自定义函数
- php - Laravel:在不使用 Javascript 的情况下将变量传递给选项卡
- c# - NavMeshAgent 与 Unity 中的目标点朝向相同的方向
- node.js - 如何通过 node.js 运行机器人的 Kick 命令?
- reporting-services - 行组内的折线图在预览中展开
- delphi - 无法释放调用者组件
- stored-procedures - 在存储过程中使用光标
- ios - 如何自定义 Material Design TextField 组件错误状态 iOS