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で関連データを照合する場合は、構造体を定義して使用する必要があります。また、すべてのデータ項目を印刷する場合は、各項目に対してを明示的に呼び出す必要があります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 に答える