c ++:带参数的真值分配警告?

Joh*_*ohn 1 c++ arguments compiler-warnings

我使用以下方法在我的程序中使用参数,但它似乎只是给我一个警告(只是一个警告): "warning: suggest parentheses around assignment used as truth value"

代码的开头如下:

   while((++argv)[0] && argv[0][0]=='-'){
      while(c =* ++argv[0])
Run Code Online (Sandbox Code Playgroud)

while(c =* ++argv[0])警告仍然存在的部分.代码工作正常,但这个警告意味着与使用的内容相反?

我认为代码是c = *++argv[0]使用指针.那么为什么单一的=工作和真正建议使用的是什么?

sha*_*oth 5

编译器不确定您是否打算这样做

while(c == whatever)
Run Code Online (Sandbox Code Playgroud)

代替.在条件表达式中滥用赋值而不是比较是一个常见的错误.有时您确实需要分配,有时不需要,编译器会发出警告.要使编译器看到您确实需要赋值而不发出警告,请使用:

while((c =* ++argv[0]) != 0)
Run Code Online (Sandbox Code Playgroud)