use*_*und 1 c++ compiler-errors assignment-operator
以下代码我们总是使用,没关系,
while(int c=getchar() != 'q');
Run Code Online (Sandbox Code Playgroud)
但如果将int更改为如下所示的指针,则编译将出现错误.
#include <stdio.h>
int main(){
int* c=0;
if(int* a =c !=0)
printf("ok");
}
error: cannot convert `bool' to `int*' in assignment
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?似乎优先事项已经改变.任何人都可以给我一个提示.如果我改变它,它会工作.
#include <stdio.h>
int main(){
int* c=0;
int* a;
if((a =c) !=0)
printf("ok");
}
Run Code Online (Sandbox Code Playgroud)
因为优先, while(int c=getchar() != 'q');是错误的.它会一直保存比较返回的值的结果getchar()和q.所以c永远是1或0.
你可能想要:
int c;
while((c = getchar()) != 'q');
^ ^
Run Code Online (Sandbox Code Playgroud)
或者可能
while((c = getchar()) != EOF && c != 'q');
Run Code Online (Sandbox Code Playgroud)