首页 > 解决方案 > 为什么`lower,upper = 0,N;`会使lower = 1和upper = 0?

问题描述

今天我在看《C-Programming》,是抄写华氏-摄氏转换函数书上的代码。

我看到了类似的代码

int lower, upper;
lower = 0;
upper = 300;

我想知道如果我能做到

int lower, upper;
lower, upper = 0, 300

在 C 中,就像在 python 和 golang 中一样。

所以我做了一些实验,我发现如果我做了,文件是可编译的,但结果会出乎我的意料。

这是我的代码和输出:

# code

#include <stdio.h>

main()
{
    int lower, upper;
    lower, upper = 0, 300;

    printf("lower:%d\n", lower);
    printf("upper:%d\n", upper);
}


# output
lower:1
upper:0

我发现无论我尝试为上分配什么数字(如 1、-5、20),输出都是相同的。

这里发生了什么?

标签: c

解决方案


C 不支持像 Python 那样分配元组。

这段代码的作用:

lower, upper = 0, 300

如下:

  • 评估lower哪个未初始化,丢弃结果值
  • 将 0 分配给upper
  • 评估值 300

如果要分配给两个变量,则需要分别进行,即

lower = 0;  upper = 300;

推荐阅读