【发布时间】:2016-09-07 01:38:03
【问题描述】:
if ((vnd = (struct diam_vnd_t *)g_hash_table_lookup(vendors,vend))) {...}
你能告诉我为什么它是一个赋值而不是括号中的布尔表达式吗?在什么情况下这个赋值可以被认为是“真”或“假”?
【问题讨论】:
-
任何半途而废的现代编译器都会出于充分的理由发出警告
-
@Olaf 即使使用了
((..))? -
@SouravGhosh:嗯,我真的没有注意到他们。好的,我改为“应该”。使用 gcc 验证:它甚至建议使用括号来避免警告(并且它们有效)。哎呀,这应该需要一个明确的比较来抑制警告,没有什么不那么明显的了。感谢您通知我。
-
标记的重复项不是重复项,因为链接的问题回答了关于使用的问题,而这个问题询问了行为。我重新打开这个。 :)
标签: c if-statement boolean assignment-operator