c - 为什么`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 不支持像 Python 那样分配元组。
这段代码的作用:
lower, upper = 0, 300
如下:
- 评估
lower
哪个未初始化,丢弃结果值 - 将 0 分配给
upper
- 评估值 300
如果要分配给两个变量,则需要分别进行,即
lower = 0; upper = 300;