将元组分配给一个 int 变量并打印该变量
assigning tuple to an int variable and printing the variable
我尝试将元组分配给 int
变量。这是我的代码。 i = (12, 45, 58, -1, 90, 100);
当我打印 i
时,它显示 100
的值。元组在 C 语言中是如何工作的?
谢谢
右边的表达式是带有逗号运算符的表达式
i = (12, 45, 58, -1, 90, 100);
它的值和类型就是最后一个操作数的值和类型
其实上面的语句等同于
i = 100;
因为其他子表达式没有副作用。
来自 C 标准(6.5.17 逗号运算符)
2 The left operand of a comma operator is evaluated as a void
expression; there is a sequence point between its evaluation and that
of the right operand. Then the right operand is evaluated; the result
has its type and value.
在C
中,您可以使用structure
作为替代。
示例代码:
#include <stdio.h>
typedef struct
{
int num1;
int num2;
char name[10];
}TupleInfo;
int main()
{
TupleInfo tuple1 = {1, 2, "Marty"};
printf("%d %d %s\n", tuple1.num1, tuple1.num2, tuple1.name);
return 0;
}
输出:
1 2 Marty
注意:如果你想使用相似的数据类型,那么使用数组可能更方便。
要了解有关 C 语言结构的更多信息,请查看以下资源:
我尝试将元组分配给 int
变量。这是我的代码。 i = (12, 45, 58, -1, 90, 100);
当我打印 i
时,它显示 100
的值。元组在 C 语言中是如何工作的?
谢谢
右边的表达式是带有逗号运算符的表达式
i = (12, 45, 58, -1, 90, 100);
它的值和类型就是最后一个操作数的值和类型
其实上面的语句等同于
i = 100;
因为其他子表达式没有副作用。
来自 C 标准(6.5.17 逗号运算符)
2 The left operand of a comma operator is evaluated as a void expression; there is a sequence point between its evaluation and that of the right operand. Then the right operand is evaluated; the result has its type and value.
在C
中,您可以使用structure
作为替代。
示例代码:
#include <stdio.h>
typedef struct
{
int num1;
int num2;
char name[10];
}TupleInfo;
int main()
{
TupleInfo tuple1 = {1, 2, "Marty"};
printf("%d %d %s\n", tuple1.num1, tuple1.num2, tuple1.name);
return 0;
}
输出:
1 2 Marty
注意:如果你想使用相似的数据类型,那么使用数组可能更方便。
要了解有关 C 语言结构的更多信息,请查看以下资源: