int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } 在上面的print语句中,预增量/后增量如何工作? 为什么回答4321 4321?
是 –foo++; C中的有效声明? (它会编译/运行)是否有任何实际应用? 很抱歉在编辑中更改了问题,但我发现了一些问题。 根据我的C ++编译器(Visual Studio 2010): –++foo; 是一个有效的命令,但 foo–++; 不是。 这有什么理由吗?
我正在通过K&R工作,现在正在练习1-16。 我发现到目前为止,书中只使用了预增量。 大多数其他教程书籍和我见过的源代码往往倾向于后增量,除非有明显的影响,例如while循环等。 这是K&R的风格或技术考虑吗? 或者我只是需要进一步完成本书以获得我的答案?!
请考虑以下声明: 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的开发人员(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 == " << […]
我在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语句有疑问: 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是值为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 […]