C 语言中的预自动增量和后自动递增问题

发布于 科技 2024-02-24
28个回答
  1. 匿名用户2024-01-25

    递增和递减运算符优先于大多数运算符,而先例优先于大多数运算符。

    和 ||一旦可以确定整个表达式的值,左边的表达式就不再执行右边的表达式,而不是 & 和 |

    所以,这是第一次:

    z = 3 > 0 为真,z --, z = 2,判断正确。

    x = 0, ++x, x = 1 < 5 为真。

    y--,y = 4

    第二次:z = 2 > 0 为真,z --, z = 1,判断正确。

    x = 1, ++x, x = 2 < 5 为真。

    y--,y = 3

    第三次:z = 1 > 0 为真,z--,z = 0,判断正确。

    x = 2, ++x, x = 3 < 5 为真。

    y--,y = 2

    第四:z = 0 > 0 为 false,z--,z = -1,向右跳过。

    x = 3,被跳过,并且值保持不变。

    y = 2,条件为 false,未执行,值不变。

    所以结果是:

    x = 3, y = 2, z = -1

  2. 匿名用户2024-01-24

    循环条件的自增自减义: z-->0 这个判刑在执行后减去 1,+x<5 在执行刑期前 x 加 1 后判定为小于 5

  3. 匿名用户2024-01-23

    第一次 3>0 &&&1<5 y==4

    第二次>0 &&2<5 y==3

    第三次 1>0 &&3<5 y==2

    第四个 0>0 是 “false”,在 & 之后不再执行,但 z- 仍然要执行,所以结果是 3, 2, -1。 我不知道这个答案是否像你所知道的那样不同。

  4. 匿名用户2024-01-22

    注意:Z--在循环中,先取z判断>0,然后z-1=2,++x等于1(++x是先加1)。

    输出为 1,4,2

  5. 匿名用户2024-01-21

    多写几个自增自减的测试题,然后在电脑上调试一下,应该就能搞清楚了。

  6. 匿名用户2024-01-20

    z--:之后执行。

    x:首先执行。

    即第一个循环:z=3>0&&x=1<5

    然后 z--;

  7. 匿名用户2024-01-19

    while(z-->0&&+x<5) 请注意,当 z--不大于 0 时,不执行 ++x < 5。

  8. 匿名用户2024-01-18

    计算:从右到左,输出到 Buffer。

    1. 缓冲区是一个堆栈。

    2.第一步:将以下“i--”8处理到缓冲区中,i=7。 缓冲区:8<-(指针)。

    第 2 步:将“i++”7 处理到缓冲区中,i=8。 缓冲区:

    78< - 第 3 步:处理“--i”。 8 进入缓冲区,i=7

    缓冲区:878 第 4 步:处理“++i” 首先自增量 1,然后 8 进入缓冲区,i=8

    缓冲区:8878

    3.输出缓冲区数据(堆栈规则):8878

    此外,自递增、自递减,也可能与编译器有关。

  9. 匿名用户2024-01-17

    计算:从右到左,输出到 Buffer。

    1. 缓冲区是一个堆栈。

    2.第一步:将以下“i--”8处理到缓冲区中,i=7。 缓冲区:8<-(指针)。

    第 2 步:将“i++”7 处理到缓冲区中,i=8。

    缓冲区:7 8< - 第 3 步:处理“--i”。

    8 进入缓冲区,i=7缓冲区:8 7 8 步骤 IV:

    处理 “++i” 先增量 1,然后处理 8 进入缓冲区,i=8缓冲区:8878

    3.输出缓冲区数据(堆栈规则):8 8 7 8 此外,自增、自减,也可能与编译器有关。

  10. 匿名用户2024-01-16

    首先,你的这种用法应该是非法的,或者至少是非常不可取的。 由于算术运算符(如 + 和 - )不指定计算操作数的顺序,因此可以首先在不同的编译器上找到操作数或正确的操作数。 因此,建议不要使用这种不确定的公式。

    这里你首先找到左边的操作数,也就是先找到++n表达式的值,因为它是前缀自动增量,所以表达式(左操作数)的值是6,n也变为6然后找到右运算值,即表达式 n++; ,因为它是后缀自动增量,所以表达式的值是 6,所以第二个操作数的值是 6,所以结果是 36之后,n 变为 7

  11. 匿名用户2024-01-15

    scanf 输入 6[x=6], x>5 为 true,后继无条件执行 x++[x=7],由于满足上述条件,printf 输出 7

    scanf 输入 4[x=4], x>5 不为 true,则无条件执行 x++[x=5],因为前面的条件不满足,printf 输出 5,执行 x--[x=4]。

    因此,当输入 6 时,我们得到输出 7; 当您输入 4 时,您将获得输出 5

  12. 匿名用户2024-01-14

    输入 6 时,满足 if 语句,x+1,输出 7,程序结束;

    输入 4 时,不满足 if 语句,x+1,输出 5,x-1,程序结束。

  13. 匿名用户2024-01-13

    ++前面表示变量先自递增,然后运行方程,所以m=++i,先执行++i,i变为9,然后赋值给m;

    最后,它意味着先计算方程,然后变量自增,所以先执行 n=j++,n 赋值给 10,然后 j 自增到 11

  14. 匿名用户2024-01-12

    ++,意思是先自加,再计算。

    ++之后,表示先计算,再自加。

    所以,m=++i; 首先进行自加法,即 i=i+1; 我=9;

    再手术,m=i; 米=9;

    n=j++;先操作,即 n=j; n=10;

    然后自加,即j=j+1; J=11;

    结果是:i=9,j=11,m=9,n=10

  15. 匿名用户2024-01-11

    有一个简单的记忆方法,++在前面,即先自我增加,i在最后,即自我增加后给值; 反之,i先来,即先给出i的值,最后给出++的值,即给出值后自增。

    m=++i;i先自增,自增后为9,再给mn=j++9; 首先将 j 的值 10 给 n,然后自行增加它,j 变成 11,这样你就得到了结果。

  16. 匿名用户2024-01-10

    应避免使用自递增或自递减表达式作为函数参数,因为不同的编译系统在计算时没有统一的方法。 例如;

    i=1;c=fun(i,++i);

    从左到右计算时,c=fun(1,2);

    如果从右到左计算,则为 c=fun(2,2);

    这种问题不需要深入研究,但是在调用函数之前应该确定参数的值,然后再将函数作为参数调用。

  17. 匿名用户2024-01-09

    第一段**:

    我是先增加 i 的值,然后再使用它。

    p=f(i,++i);就是先执行++i,再进行函数调用。 因为执行++i后,i的值变成了3,所以等价于p=f(3,3);

    你可以在函数 f 中打印出 a 和 b 的值,你会发现 a 和 b 都是 3

    第二段**:

    i++ 是先用 i 的值,再把 i 的值加 1

    所以它等价于先执行 p=f(2,2);

    执行后,将 i 的值更改为 3答案应该是 0

    我怀疑你老师的课件写错了,所以我建议你问他。

  18. 匿名用户2024-01-08

    主要的自加自减法问题,你的记忆方面,给出一个方法。

    x++ 表达式的值从左到右看 x 的位置,此时 x 在 ++ 的左边,没有 ++,所以 x++ 表达式的值是 x 的值。

    反之,++x,x在++的右边,表达式的值是x+1的值,但无论哪种方式,只要执行完成,x的值就是+1

    x--, x。

    因此,当 6: if(6>5) 和输出 74: if(4>5) 不满足时,执行 x--,但此时 x 已经执行了 ++,所以 x 是 5 之前 --

    x--表达式的值为 5

  19. 匿名用户2024-01-07

    我以前不明白这个问题,但现在我会了。 不明白真的很烦人。 首先,i=8,m=++i,前面是+1,然后取值,然后是m=9,此时i是+1之后运算的结果,i=,n=j++

    最后,是先取值,再取+1; 那么n先的值是j+1之后的值,j=11

  20. 匿名用户2024-01-06

    在表达式中,++和标题一样,在变量前面,它是自增和减法,然后取变量值。 变量之后,先取变量的值,然后自增自减。

    例如:j=i++; 这意味着 i 的值首先分配给 j,然后 i 是自递增的。 这也是以下**的含义。 您可以使用此想法进行跟进。

  21. 匿名用户2024-01-05

    i++ 和 ++i 在 C 语言中都是自动增量,但它们以不同的顺序自增量。 ++i 表示 I 递增 1 然后参与其他操作,而 i++ 表示 I 参与操作,i 的值递增 1。

    第四行被赋值 j, j=3,然后 i+1=4

    第 5 行 printf 也被计算出来,认为执行了 i++ 操作 j=3,输出为 i=4,然后计算出 i=i+1=5

    在第 6 行中,i+1=5+1=6,然后 j=6

    在第 7 行中,输出 i+1=6+1=7,输出 i=7J 不变或 6,第 6 行与第 1 行相同。

    i- 1 一次输出 6 个,j 也是 6,然后 i 减去 1 次 = 5;

    最后两行道理也是留给房东去思考的,其实printf最好不要把计算步骤放进去,很容易忽略。

    如果您不明白,请询问。

  22. 匿名用户2024-01-04

    这真的是关于编译器的。

    以下是 VS2019 运行的结果:

    下面是 clion 运行的结果:

    Clion 的警告是 x++ 是没用的,检查后,它说 x++ 应该放在赋值操作之后,所以它应该放在赋值操作之后。

    x = x +(i++)

    x++;所以正确的结果应该是 6,3

  23. 匿名用户2024-01-03

    结果取决于编译器,不同的编译器会有不同的结果,6,3

  24. 匿名用户2024-01-02

    它应该是 b 7 3

    x++ 是 4,i++ 是 3

    4+3 是 7,应选择 B

    算术水平高于其他运算符

  25. 匿名用户2024-01-01

    我们很乐意为您解答!

    答案是5,3。

  26. 匿名用户2023-12-31

    因为要看具体的编译软件,不同的便衣软件都有自己的规则,用户往往被蒙在鼓里。 即使用户自己了解某个变音符号软件的操作规则,编写的程序也缺乏可移植性和可读性。 如果你在其他编译软件上编译它,你会得到不同的结果,所以说像这样模棱两可的语句的最好方法是远离它,把它分成两个或多个语句。

  27. 匿名用户2023-12-30

    (3*3+3*3)=18;

    证明。

    我的意思是我先自我加法,然后参与运算,--我先减法再参与运算;

    i++ 表示 i 先参与运算,然后加自身,--i 表示 i 先参与运算,然后减去自身;

    在整个方程(i++*i+i--*i)中,i在参与运算之前加了一次,然后又减去自身(++i,--i),所以i的值没有变化,它仍然是3,运算后,i的值再加后减去(++i,--i),所以i的值仍然没有变化, 并且仍然等于 3

    所以计算结果是 3

    操作完成后,i=3;

  28. 匿名用户2023-12-29

    记住一句口头禅:先增加,然后给予。

    第一个和最后一个值是指操作员位置。

    增加和充实是指首先要采取什么行动。

    示例:i++;

    赋值后,算子在后面,所以先进行赋值操作,进行自加。

相关回答
18个回答2024-02-24

if(expression) 如果 expression=0 为 false,则表达式不等于 0 为 true。 >>>More

14个回答2024-02-24

在 VisualStudio 2013 中编写和调试 C 语言程序的步骤: 1.打开 [文件] - 新建 - 项目以打开“新建项目”窗口。2. 在[模板]、[名称]、[位置]和[解决方案名称]中选择[Visual C++] Win32控制台应用程序,可以根据需要填写。 >>>More

14个回答2024-02-24

对于如此大的阶乘,C语言中的基本变量无法计算和溢出。 >>>More

11个回答2024-02-24

当具体循环数(条件)不明确时使用 while,当指定循环数(条件)时使用 for >>>More

7个回答2024-02-24

1.运用数学规则,写出判断素数。

功能。 2 从 2 迭代以确定每个数字是否为质数。 >>>More