BH当我输入以下代码或其变体时,我不确定为什么会一直出现这个错误:
int age = 20;
int score = 49;
int crazy = 100;
if (age = 20 && score < 50 || score > 95) {
Console.WriteLine("Welcome"); }
这是错误:错误CS0019:Operator'&;'不能应用于类型为"int"one_answers"bool"的操作数
这个很棒的社区里有人能帮忙吗?谢谢
这里需要注意的是,当C#进行赋值(将值放入变量中(时,它还会返回已赋值的值。此:
age = 20
返回一个值,20
你可以在另一项任务中使用这个:
score = age = 20;
年龄是20,因为我们给它赋值,它返回20。Score也是20,因为我们给它分配了(年龄=20(的返回值。给Score分配(分配年龄的结果(也返回了一个值。。我们可以永远这样下去:
a=b=c=d=e=f...=x=y=z=20; //all 26 variables now have a value of 20
我们可以将返回值视为和的元素,就像其他元素一样:
score = (age = 20) + 1;
将20分配给年龄,将21分配给分数,并返回21
我们可以更改类型,就像我们可以说myString = 20.ToString()
一样(是的,你可以像调用变量一样调用常量上的方法(,我们可以这样说:
myString = (score = (age = 20) + 1).ToString();
将20分配给年龄,将21分配给分数,然后将返回的21变为字符串;21〃;到myString
--
好吧,这种愚蠢已经够了。。但希望你能明白为什么
if(age = 20 && score < 50)
正在给出它所做的错误。age
设置为20,返回20,并使用(score<50(对&&
进行编辑,这是一个返回布尔值的操作。这意味着它就像你写的那样:
age = 20;
if(20 && score < 50)
这种简单的说法不起作用。干得好,这不是JavaScript。
当然,你很可能想用==
来比较年龄,而不是用=
来做作业
请记住,赋值也会产生值,这就是为什么这个看起来疯狂的循环有效:
while(null != x = stream.Read()) //loop while Read() doesn't return null
{
//use x, which certainly has a non null value
}
不过,我在使用复合赋值和比较语句时要谨慎——它们的可读性比一步一步拼写出来的要差得多:
for(x = stream.Read(); x != null; x = stream.Read())