3

在 C 中,当我制作任何 n 元组并尝试使用它时,我只能使用它的最后一个元素。甚至类型显然是元组的最后一个元素,而不是元组本身。如何获取除最后一个元素之外的元素?我快速浏览了规范,什么也没看到。

例子:

#include <stdio.h>

int f() {return 2;}
char* g() {return "dudebro";}

int main() {
    printf("%d\n", (f(),g(),3)); /* Should print the address of the tuple (unless it's by-value, in which case it should be a compile error) but prints the last element?*/
    return 0;
}

运行:

$ gcc -ansi -pedantic -Wall -Wextra tt.c -o tt
$ ./tt
3
4

2 回答 2

5

C 中没有元组之类的东西。你所拥有的是逗号运算符的使用。

如果要在 C 中整理相关数据,则需要定义和使用 struct。如果要打印出所有数据项,则需要printf对每个数据项进行显式调用(或使用多个格式说明符)。

例如

typedef struct Foo {
    int a;
    char *b;
};

Foo foo;
foo.a = 5;
foo.b = "hello";

printf("%d %s\n", foo.a, foo.b);
于 2012-06-27T22:27:35.813 回答
2

当你像这样将一堆值放在逗号中时,C 将丢弃除最右边的值之外的所有值。它将评估 F 和 G,然后忽略它们。我不太确定为什么你认为应该发生的事情应该发生。

于 2012-06-27T22:32:44.410 回答