我已经阅读了这个问题,我想补充一点,使用逗号运算符不能完成哪些事情。这让我很困惑,因为我可以这样做:
int arr[3];
arr[0]=1,arr[1]=2,arr[2]=3;
但是当我这样做时:
int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
它给了我一个编译器错误。
我想问一下,逗号运算符在实际应用中有什么限制?
我已经阅读了这个问题,我想补充一点,使用逗号运算符不能完成哪些事情。这让我很困惑,因为我可以这样做:
int arr[3];
arr[0]=1,arr[1]=2,arr[2]=3;
但是当我这样做时:
int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
它给了我一个编译器错误。
我想问一下,逗号运算符在实际应用中有什么限制?
要意识到的一件事是,并非所有 C 中逗号的使用都是逗号运算符的实例。将您的第二个示例更改为语法声明:
int a0=1,a1=2,a2=3;
逗号不是运算符,它们只是分隔列表中声明符实例所需的语法。
此外,参数/参数列表中使用的逗号不是逗号运算符。
在我看来,使用逗号运算符几乎总是一个坏主意——它只会引起不必要的混乱。在大多数情况下,使用逗号运算符完成的操作可以使用单独的语句更清楚地完成。
很容易想到的两个例外是在for
语句的控制子句中,以及在绝对需要将多个“事物”塞入单个表达式的宏中,甚至只有在没有其他合理选择时才应该这样做)。
您可以在表达式出现的大多数地方使用逗号运算符。有几个例外;值得注意的是,您不能在常量表达式中使用逗号运算符。
在使用逗号也用作分隔符的逗号运算符时,您还必须小心,例如,在调用函数时,您必须使用括号对逗号表达式进行分组:
void f(int, bool);
f(42, 32, true); // wrong
f((42, 32), true); // right (if such a thing can be considered "right")
你的例子是一个声明:
int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
在声明中,您可以通过用逗号分隔多个事物来声明它们,因此这里也使用逗号作为分隔符。此外,您不能像这样将表达式添加到声明的末尾。(请注意,您可以使用 获得所需的结果int arr[3] = { 1, 2, 3 };
)。