gpt4 book ai didi

c - 为什么C程序会输出这样的结果

转载 作者:行者123 更新时间:2023-12-02 21:48:31 24 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/

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