我在OCA问题中看到了这个问题,需要知道为什么输出90而不是100.这里是代码:
int x = 9;
long y = x * (long) (++x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)
那么,我认为这会做的是,首先,增加x(因为这是第一次发生的事情?)然后它会进行类型提升并取左x,即10,将其变为long并乘以这两个long.对?
#include<stdio.h>
int main()
{
int a = 10;
++a = 20;
printf("a = %d", a);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述代码获得的输出是:a = 20; 当作为C++代码运行时.
#include<stdio.h>
int main()
{
int a = 10;
a++ = 20;
printf("a = %d", a);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这给出了编译错误.这背后的原因是什么?
在任何情况下,遵循准则"宁可
++i过i++",你会不会出问题.
我知道这++i比稍快i++,但认为没有理由让他们出错.我搜索了一会儿,我能找到的最接近的是这个.它清楚地解释了为什么它更喜欢使用++i,但不是你怎么可能出错使用i++.
所以有人能告诉我怎么i++会出错?
注意:我的问题不是欺骗,因为我没有询问性能.我已经看到了这个问题.我在问i++我上面提到的答案中提到的怎么可能是错的.
我正试图在js中解决这个魔法:
var a = 1;
console.log(a++ + ++a);
Run Code Online (Sandbox Code Playgroud)
它返回4,我可以理解它是1 + 3,但这是什么顺序?
我想在for循环中预增值分配
for (int x=0; x<100; x+=increase){
// loop operation here
}
Run Code Online (Sandbox Code Playgroud)
上面的代码后增加值,但是我想预增加它。我知道我可以使用++i语法进行预递增,但是有一种方法可以通过变量赋值进行预递增。
++*var ++和++ var ++之间有什么区别?为什么++*var ++正在工作而++ var ++结果与C中的左值必需错误?
我很好奇,发现当前的一段代码不起作用,但我无法弄清楚原因:
#include <stdio.h>
void main(){
int a = 42;
printf("%d\n", ++a++);
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不是一个错误的语法.有人可以解释错误输出吗?
first.c: In function ‘main’:
first.c:5:17: error: lvalue required as increment operand
printf("%d\n", ++a++);
Run Code Online (Sandbox Code Playgroud) 以下程序的输出不应该是 -
2 3 20
相反,它正在显示
3 2 15
任何人都可以解释这背后的原因吗?
#include<stdio.h>
main()
{
int a[5] = {5,1,15,20,25};
int i,j,m;
i = ++a[1];
j = a[1]++;
m = a[i++];
printf("%d %d %d",i,j,m);
}
Run Code Online (Sandbox Code Playgroud) i=2;
i= ++i + ++i + ++i;
printf(i)
Run Code Online (Sandbox Code Playgroud)
请给出输出说明吗?
我得到的答案是12但它应该是13.