![]() |
1
10
当它评估条件(x!=0)x仍然是1(即
看一看
here
详情。记住一件简单的事情很重要:当你说
|
![]() |
2
7
接线员?:优先级高于运算符+=。所以你的表达式被计算为
价值
|
![]() |
3
6
把它分解成类似的
在你的情况下,因为
请不要这样写代码。 |
![]() |
4
1
作为一个初出茅庐的程序员,只要知道你不应该写这样的东西,这样你就可以忘记它,担心你! |
![]() |
5
0
原因是后递减/递增运算符(
所以它的返回值
自从
|
![]() |
6
0
x——表示表达式是以x的当前值计算的,然后x被减少1。Z++的情况也是如此。这是--z的另一种方法,这意味着它是以z的新值来计算的。 所以在评估时,x是1,z是3。在计算表达式x之后,x变为0,z为4;y=2+3=5 |
![]() |
7
0
记住,递增和递减运算符返回不同的内容,这取决于它们是放在变量名称之前还是之后。
尤其是当
另外,由于++运算符放在变量之后,因此
因此,这可以归结为
|
![]() |
8
0
x--和z++在使用后的递减和递增。当计算三元运算符时,您将得到以下结果: y+=(1)?(3):(-Z); --从未调用z,条件的计算结果为true,并执行三元运算符中的第一个选项。使用后,x将递减,z将递增。 |
![]() |
9
0
这是正常的,因为它首先“运行”三元运算符,然后做减量运算,因为减量运算符(x-)是后缀,所以得到z++是3,所以y中有5。 |
![]() |
10
0
表达式
|
![]() |
11
0
我认为你最根本的问题是你假设
|
![]() |
12
0
y+=(x)?z++:--z);所以这是你的问题,答案很简单………… 正如我们所知道的,像x或x++之类的东西被称为后递增或后递减。因此,根据后增或后减的规则,首先对表达式进行计算,然后只对表达式进行增或减操作。即首先评估,然后增加或减少…… 现在让我们来解决您的问题: y+= x?Z++:--Z……现在它包含了左、中、右三个部分……现在的考虑点是:“如果左部分是真的,那么它将返回中间部分,否则右部分……并且执行总是从左部分开始,因为它是条件部分。” 现在将语句简化为:y+=x?z:z;….现在查看左部分是否有前、后增量或减量…..如果post++/--是der den,首先评估简化语句……den go for++/--….. 现在左边部分有后减量……所以让我们先计算表达式……即 y+=1:3:3//条件部分中的任何非零值都是真实条件(即1) 所以现在我们的条件是真的,它将返回中间部分,当控件转到中间部分时,只有x值会减小,即它变为0…。 现在,第二个简化语句是y+=z.(\\由于条件为真,我们得到了中间部分,编译器将跳过部分的其余部分,即右部分。) 现在观察z是post++/-(or)pre++/-)…hahh..它的post increment..所以简单地首先评估简化的状态2,然后增加z的值……,即
现在表达式被计算为y=5,所以现在增加z的值,即它变成4。 |
![]() |
13
0
如我们所知,操作员检查条件
如果是
因为我们正在初始化
结果它暴露了结果
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |