我使用以下方法处理我的程序中的参数,但它似乎只是给我一个警告(只是一个警告):"warning: suggest parentheses around assignment used as truth value"
代码的开头如下:
while((++argv)[0] && argv[0][0]=='-'){
while(c =* ++argv[0])
while(c =* ++argv[0])
部分是警告持续存在的地方。代码工作正常,但是这个警告意味着与使用的内容相反?
我认为代码是c = *++argv[0]
,使用指针。那么为什么单个=
可以工作,真正建议使用什么呢?
答案 0 :(得分:5)
编译器不确定您是否打算
while(c == whatever)
代替。 误用赋值是常见错误,而不是条件表达式中的比较。有时您确实需要分配,有时不需要,编译器会发出警告。为了使编译器看到你真的想要赋值而不发出警告,请使用:
while((c =* ++argv[0]) != 0)
答案 1 :(得分:1)
你需要加倍括号来明确表明你真的想要测试c的值:
while( (c =* ++argv[0]) )
答案 2 :(得分:1)
编译器会发出警告,因为您可能会意外地编写语句而不是表达式。通过在括号中嵌入语句,您可以告诉编译器您的意图并阻止他发出警告。