C++;“错误”;赋值的左操作数所需的左值; 我是C++新手,我在C++语言中有一个问题。书末的答案是用帕斯卡语写的 我的C++代码中的问题是,在第12行,我得到了标题中可以找到的错误。有什么想法吗
帕斯卡码:C++;“错误”;赋值的左操作数所需的左值; 我是C++新手,我在C++语言中有一个问题。书末的答案是用帕斯卡语写的 我的C++代码中的问题是,在第12行,我得到了标题中可以找到的错误。有什么想法吗,c++,pascal,C++,Pascal,帕斯卡码: var n,x:integer; begin n:=0; repeat write('x=');read(X); if x<>0 then if x mod 5 = 0 then n:=n+1 else n:=n-1; until x=0; if n=0 then write('yes') else write('no') end; var n,x:整数; 开始 n:=0; 重复 写('x=');读(X
var n,x:integer;
begin
n:=0;
repeat
write('x=');read(X);
if x<>0 then
if x mod 5 = 0 then
n:=n+1
else
n:=n-1;
until x=0;
if n=0 then
write('yes')
else
write('no')
end;
var n,x:整数;
开始
n:=0;
重复
写('x=');读(X);
如果x0那么
如果x mod 5=0,则
n:=n+1
其他的
n:=n-1;
直到x=0;
如果n=0,则
写(‘是’)
其他的
写('否')
结束;
<>我的C++代码:
int main()
{
int x,n;
cin>>x;
while(x>0)
{
if(x>0)
{
if(x%5=0){
n=n+1;
} else {
n=n-1;
}
}
if(n=0){
cout<<"Yes"<<;
} else {
cout<<"No"<<;
}
}
}
intmain()
{
int x,n;
cin>>x;
而(x>0)
{
如果(x>0)
{
如果(x%5=0){
n=n+1;
}否则{
n=n-1;
}
}
如果(n=0){
CUT< P> C++中的条件(同时,如果……),你需要使用= = .< /p> < p>你有一个简单的键入:<代码>(x% 5=0){< /C> >是试图分配0到<代码> x% 5 < /C>(由于运算符优先模数是在赋值之前计算)。<代码> x% 5 < /Cord>不能被分配到(它不是一个LValk)编译器告诉你了
当然,解决方法是编写x%5==0
在这种情况下,您很幸运,错误是在编译时发现的。类似于if(n=0)
(第18行)的东西可能不是,因为x=0
是一个值为0的表达式
有两种方法可以防止这种情况:
- 请确保您的编译器警告尽可能具有攻击性。对于gcc,我使用
-Wall-Wextra
,这种组合足以解决这个常见问题
- 一些开发人员会编写
if(0==x)
,因为错误的if(0=x)
会在编译时被发现,试图分配给0
。我个人觉得这很令人困惑
赋值运算符需要左值意味着左侧操作数需要是可以保存值的变量/位置。
这就是错误的含义。
if语句中需要的是==可能不是其他答案中提到的赋值
如果(x%5=0)
应该是
如果(x%5==0)
“x%5”不是一个左值,因为您无法为其赋值,因此出现错误。第12行是“如果(x%5=0){”,而我们在这里:if(n=0)
应该是if(n==0)
也是。但是在浪费我们的时间问一些琐碎的问题之前,你真的应该打开编译器警告并学习语言的基础知识。另外,为了可读性,请缩进你的代码并删除额外的连续空行,谢谢。这是个小问题“平等”->“平等”