在C表达式中使用赋值运算符有效吗?
而不是在C表达式中使用赋值运算符有效吗?,c,syntax,C,Syntax,而不是 cardNumber = j+1; deck[i][j] = cardNumber; theDeck[k] = cardNumber; 仅仅说一句话有效吗 deck[i][j] = theDeck[k] = cardNumber; 要同时将卡片编号分配给卡片组和卡片组???是的,它是。赋值运算符返回一个值。是,它是。赋值运算符返回一个值。是的,它是一个表达式,其值位于赋值的右侧。请注意,这也来自=从右向左的关联性,这使得: x = y = z 相当于: x = (y = z) 但
cardNumber = j+1;
deck[i][j] = cardNumber;
theDeck[k] = cardNumber;
仅仅说一句话有效吗
deck[i][j] = theDeck[k] = cardNumber;
要同时将卡片编号分配给卡片组和卡片组???是的,它是。赋值运算符返回一个值。是,它是。赋值运算符返回一个值。是的,它是一个表达式,其值位于赋值的右侧。请注意,这也来自=从右向左的关联性,这使得:
x = y = z
相当于:
x = (y = z)
但不是:
(x = y) = z /* wouldn't work */
所以你可以更进一步写:
theDeck[k] = deck[i][j] = cardNumber = j+1;
是的,它是一个表达式,其值位于赋值的右侧。请注意,这也来自=从右向左的关联性,这使得:
x = y = z
相当于:
x = (y = z)
但不是:
(x = y) = z /* wouldn't work */
所以你可以更进一步写:
theDeck[k] = deck[i][j] = cardNumber = j+1;
是的;是这样的:
deck[i][j] = (theDeck[k] = cardNumber);
是的;是这样的:
deck[i][j] = (theDeck[k] = cardNumber);
当您尝试时,编译器会告诉您什么?是的-赋值表达式x=y的值是分配给XY的值。您可能会在某些编译器设置上收到编译器警告,不确定示例情况,但如果您在相关的if语句中赋值,则肯定会对gcc发出警告。您可以使用双参数解决if EXPRESSON情况:if status=func。。。转到出口;警告不是因为您做错了什么,而是因为它看起来像==是预期用途。当您尝试时,编译器会告诉您什么?是-赋值表达式x=y的值是分配给XY的值。您可能会在某些编译器设置上收到编译器警告,但不确定示例情况,但对于gcc,如果您在if语句中赋值,这是相关的。您可以使用双参数解决if EXPRESSON情况:if status=func。。。转到出口;警告并不是因为你做错了什么,而是因为它看起来像==是预期用途。或者,我怎么说:赋值运算符是一个表达式。也就是说,它将它与Python等其他语言中的赋值语句区分开来。C只允许所有人?语句上下文中的表达式。Python允许x=y=42,但不允许x=y=42,这表明它只是一个特殊的语句构造。也就是说,它将它与Python等其他语言中的赋值语句区分开来。C只允许所有人?语句上下文中的表达式。Python允许x=y=42,但不允许x=y=42,这表明它只是一个特殊的语句构造。这是否意味着可以使用括号来确定整行的优先级?@brianSan是的,它们可以。但它不是必需的,因为操作符的关联性已经做到了这一点。x=y=z=a与x=y=z=a完全相同这意味着可以使用括号来确定整行的优先级?@brianSan是的,它们可以。但它不是必需的,因为操作符的关联性已经做到了这一点。x=y=z=a与x=y=z=a完全相同