是否有一些程序员++i在正常的for循环中写入而不是写入i++?
我期待以下代码:
#include<stdio.h>
int main(){
int i = 10;
int j = 10;
j = ++(i | i);
printf("%d %d\n", j, i);
j = ++(i & i);
printf("%d %d\n", j, i);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
表情j = ++(i | i);并j = ++(i & i);会产生错误,左值如下:
x.c: In function ‘main’:
x.c:6: error: lvalue required as increment operand
x.c:9: error: lvalue required as increment operand
Run Code Online (Sandbox Code Playgroud)
但我惊讶于上面的代码编译成功,如下所示:
~$ gcc x.c -Wall
~$ ./a.out
11 11
12 12
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
$a = 5;
$b = &$a;
echo ++$a.$b++;
Run Code Online (Sandbox Code Playgroud)
不应该打印66?
为什么打印76?
我理解它们之间的区别i++ and ++i,但我不太清楚为什么我得到以下结果:
static void Main(string[] args)
{
int c = 42;
c = c++;
Console.WriteLine(c); //Output: 42
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,因为这是将变量赋值给自己然后递增值,我希望结果是43.然而,它正在回归42.使用时也得到相同的结果c = c--;.
我意识到我可以简单地使用c++;并完成它,但我更好奇它为什么表现得如此.谁能解释一下这里发生了什么?
从下面或这里的程序,为什么最后一次调用System.out.println(i)打印值7?
class PrePostDemo {
public static void main(String[] args){
int i = 3;
i++;
System.out.println(i); // "4"
++i;
System.out.println(i); // "5"
System.out.println(++i); // "6"
System.out.println(i++); // "6"
System.out.println(i); // "7"
}
}
Run Code Online (Sandbox Code Playgroud) 半开玩笑地半开玩笑:为什么我不能++i++用C语言,特别是在C#中?
我希望它增加值,在我的表达式中使用它,然后再次递增.
我正在学习编程,我从C语言开始.我正在读我们的C书.我正在那本书中学习这个课程.
main( )
{
int a[5] = { 5, 1, 15, 20, 25 } ;
int i, j, k = 1, m ;
i = ++a[1] ;
j = a[1]++ ;
m = a[i++] ;
printf ( "\n%d %d %d", i, j, m ) ;
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,它将打印i as 2,j as 1和m as 15
但不知何故,它打印为 i as 3,j as 2和m as 15?为什么会这样?
以下是我的理解 -
b = x++;
In this example suppose …Run Code Online (Sandbox Code Playgroud) 我正试图深入了解post和pre incrementors,但是我对以下表达式有点困惑:
public static void main(String[] args) {
int i = 0;
i = i+=(++i + (i+=2 + --i) - ++i);
// i = 0 + (++i + (i+=2 + --i) - ++i);
// i = 0 + (1 + (3 + 2) - 1);
// i = 0 + (6 - 1);
System.out.println(i); // Prints 0 instead of 5
}
Run Code Online (Sandbox Code Playgroud)
我知道我在哪里错过了逻辑,但在哪里?
我尝试过的:
谢谢您的帮助
PS:评论是我的微积分的细节
编辑1
我试图将de hard编码值从表达式2改为其他东西,结果总是给出0
看看这个例子:
int i = 0;
i = …Run Code Online (Sandbox Code Playgroud) 我正在用java制作一个相互竞争的汽车程序.每辆车都是一个单独的线程.
当汽车完成比赛时,每个人都称这种方法.我已经在不同的计时器速度下测试了该方法,它似乎工作正常.但我确实意识到每个线程都在访问变量carsComplete,有时是在同一时间(至少在date命令给我的范围内).
所以我的问题是:这个方法是线程安全的吗?
public static String completeRace()
{
Date accessDate = new Date();
System.out.println("Cars Complete: " + carsComplete + " Accessed at " + accessDate.toString());
switch(++carsComplete)
{
case 1: return "1st";
case 2: return "2nd";
case 3: return "3rd";
default: return carsComplete + "th";
}
}
Run Code Online (Sandbox Code Playgroud) 为什么以下用C++编译?
int phew = 53;
++++++++++phew ;
Run Code Online (Sandbox Code Playgroud)
相同的代码在C中失败,为什么?