3

我刚刚在另一个问题中看到了这一点,并认为逗号一定是错字

[controller release], controller = nil; 

我正在使用 ARC 所以没有使用release,但我自己测试了以下代码,发现它编译并运行良好。

NSObject *a = [NSObject new];
[a copy], a=nil;

我的印象是逗号仅用于分隔列表和相同类型的多个赋值:

NSArray *a = @[@"1", @"two", /*etc*/]; 
int a, b, c, d;

实际问题:

是不是很简单:逗号可以用来分隔命令?还有其他规则吗?

4

2 回答 2

7

逗号运算符是C 语言结构。

来自维基百科

在 C 和 C++ 编程语言中,逗号运算符(由记号 , 表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。逗号运算符在所有 C 运算符中具有最低优先级,并充当序列点。逗号标记作为运算符的使用不同于它在函数调用和定义、变量声明、枚举声明和类似构造中的使用,在这些构造中它充当分隔符。

于 2012-11-19T11:16:37.880 回答
0

在您的代码中,逗号用作分号的替代品。,如果您使用或;在您的示例中,它没有任何区别。

有关详细信息,请参阅此问题:Effect of using a comma instead of a semi-colon in C and C++

于 2012-11-19T11:38:55.910 回答