gpt4 book ai didi

c - 为什么C程序这样输出

转载 作者:行者123 更新时间:2023-12-02 04:49:40 25 4
gpt4 key购买 nike

我尝试运行以下代码并得到了一些结果。有人可以解释一下吗:

int number = {12,13,14};
printf("%d",number);

以上代码将输出打印为 12。如果我尝试运行以下代码:

int number = (12,13,14);
printf("%d",number);

这会将输出打印为 14,但使用以下代码将输出打印为 12:

int number;
number = 12,13;
printf("%d",number);

最佳答案

number = {12,13,14} 是标量初始化,但是你提供的元素多于你应该提供的元素,编译器会抛出一个警告,我想你已经忽略了第一个元素 12 分配给变量 number

当你使用number = (12,13,14)时,

逗号 (,) 运算符计算第一个操作数并丢弃结果,然后计算第二个操作数并返回结果。

所以这里 12 被丢弃,13 被评估为 13 并返回。现在这个返回的 13 值是下一个逗号运算符的第一个操作数。现在,它将计算 13 到 13 并丢弃此结果 13 并计算第二个操作数,即 14,并将结果返回为 14,并将其分配给变量 number

当你跟随

  number = 12,13;
printf("%d",number);

这将打印 12,因为 = 的优先级大于 所以首先 number = 12 将被评估并且 = 返回分配的值,即 12。现在逗号运算符得到了 = 操作的两个操作数返回值,即 12 和 13。使用逗号运算符,12 将被评估为 12 并被丢弃。评估并返回 13。返回到?没有人。未分配给 number,因为分配已执行。所以 number = 12,13; 看起来像 (number=12),13;

也试试这个。

   int num1,num2;
num2 = (num1 = 13,14);
printf("%d %d",num1,num2);

这将根据为早期代码输出提供的参数打印 13 14

关于c - 为什么C程序这样输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106560/

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