Tag: 预增量

printf中的预增量和后增量

int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } 在上面的print语句中,预增量/后增量如何工作? 为什么回答4321 4321?

你可以在c中的同一个语句中的同一个变量上有一个递增器和一个递减器

是 –foo++; C中的有效声明? (它会编译/运行)是否有任何实际应用? 很抱歉在编辑中更改了问题,但我发现了一些问题。 根据我的C ++编译器(Visual Studio 2010): –++foo; 是一个有效的命令,但 foo–++; 不是。 这有什么理由吗?

K&R似乎更喜欢预增量

我正在通过K&R工作,现在正在练习1-16。 我发现到目前为止,书中只使用了预增量。 大多数其他教程书籍和我见过的源代码往往倾向于后增量,除非有明显的影响,例如while循环等。 这是K&R的风格或技术考虑吗? 或者我只是需要进一步完成本书以获得我的答案?!

C和JAVA中递增递减运算符的差异

请考虑以下声明: int a[]={1,2,3,4,5,6,7,8}; int i=0,n; n=a[++i] + i++ + a[i++] + a[i] ; 根据我的逻辑,n应该是10.但是我在c中得到不同的输出(输出是7)但是在java中我得到的预期结果是10.在增量和减量运算符在c中工作的方式有什么不同和java。 这是我的确切c和java代码: #include int main() { int a[]={1,2,3,4,5,6,7,8}; int i=0,n; n=a[++i] + i++ + a[i++] + a[i] ; printf(“%d”,n); getch(); return 0; } 输出的Java代码:10 public class HelloWorld{ public static void main(String []args){ int a[]={1,2,3,4,5,6,7,8}; int i=0,n; i=0; n=a[++i] + i++ + a[i++] […]

C语言有预增量和后增量的历史原因是什么?

(注意:我不是在询问预增量与后增量的定义,或者它们是如何在C / C ++中使用的。因此,我不认为这是一个重复的问题。) C的开发人员(Dennis Ritchie等人)出于很好的理由创建了增量和减量运算符。 我不明白为什么他们决定创造前后增量/减量的区别? 我的感觉是,当C开发时,这些运算符比今天更有用。 大多数C / C ++程序员使用其中一种,而其他语言的程序员今天发现这种区别是奇怪和令人困惑的(注意:这完全基于轶事证据)。 他们为什么决定这样做,以及计算上发生了什么变化,这种区别今天没那么有用? 为了记录,可以在C ++代码中看到两者之间的差异: int x = 3; cout << "x = 3; x++ == " << x++ << endl; cout << "++x == " << ++x << endl; cout << "x– == " << x– << endl; cout << "–x == " << […]

这是C中未定义的行为吗?

我在gcc上运行我的C代码来理解前/后增量运算符。 然而,我看到的结果并不是我的预期。 就像第6行一样,因为我是5,它应该是 8 7 6 5 5 但它是8 7 6 5 8 然后到达最后一行,显示14 14 14 14 。 有人可以解释一下这种行为。 我原以为14 14 13 12 这个编译器是否依赖? 是否未定义序列点上printf函数的beahviour? #include int main() { i = 5; printf(“%d %d %d %d %d \n”, i, i++, i++, i++, i); printf(“%d \n”, ++i); printf(“%d \n”, ++i); printf(“%d \n”, ++i); printf(“%d %d %d […]

单个语句中的多个增量运算符

可能重复: 未定义的行为和序列点 请解释以下陈述的行为 int b=3; cout<<b++*++b<<endl; 它将如何计算?

C中的后增量和前增量

我对这两个C语句有疑问: x = y++; t = *ptr++; 使用语句1,y的初始值被复制到x然后y递增。 使用语句2,我们查看* ptr指向的值,将其放入变量t,然后稍后增加ptr。 对于语句1,后缀增量运算符的优先级高于赋值运算符。 所以不应该首先递增y,然后将x赋值给y的递增值? 在这些情况下,我不理解运算符优先级。

i = ++ i和++ i之间的区别

可能重复: 谁能解释这些未定义的行为(i = i ++ + ++ i,i = i ++等…) i = ++i;之间有什么区别i = ++i; 和++i; 其中i是值为10的整数? 根据我的说法,在完成两个表达式i =11之后,两者都做同样的增量工作。

数组中的预增量与后增量

我正在学习编程,我从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 ) ; } 我的理解是,它将打印i as 2 , j as 1 […]