设有定义 int a=3 b=4 c=5,求下列表达式的值,在表达式运行后,a b c的值分别是多少?

学习 时间:2026-04-03 09:42:44 阅读:6387
设有定义 int a=3 b=4 c=5,求下列表达式的值,在表达式运行后,a b c的值分别是多少?(1)a%b+b/a (2)a/b+c++ (3)-b++-c (4)(a,b,c),a++,--c,C++

最佳回答

爱撒娇的往事

野性的帅哥

2026-04-03 09:42:44

(1)先算a%b=3,再算b/a=1,最后相加得结果4。a、b值不变。规则:先乘除/取模,后加减,和数学习惯一样。(2)先算a/b=0,再加c得结果5,最后c++。a、b值不变,c=5+1=6。规则:在以上基础上,变量右边的递增/递减运算符最后算,反之,变量左边的递增/递减最先算,仅次于括号、下标等。(3)同理,先算-b-c得结果-9,然后b++。a、c值不变,b=4+1=5。规则同上,负号优先于乘除。不过你最好加上空格,如-b++ - c,这样可以看得出第一个“-”和“++”是和b结合的单目运算符,第二个“-”是b和c之间的双目运算符。(4)先算括号中的a,b,c,依次计算,括号内的结果是最后一个表达式c的值为5,前两个表达式结果被丢弃,其过程也没有造成任何影响;然后算--c,c的值变为4;接着算5,a,4得最终结果4;最后算a++,a的值变为4。这个比较复杂,最后a=4,b不变,c=4,结果为4。规则:括号最优先,逗号顺序运算各个表达式,得到最后一个表达式的值,其优先级最低,仅次于变量右边的递增/递减运算符,其他的上面都说过了。需要注意的是,这里是按照ANSI C的标准进行解读的,实际上不少编译器没有真正完全按照ANSI C标准去写,情况可能有所不同。如果你不放心,可以把它们拆分开来都编译一遍做试验,一切要以你用的编译器的实际情况为准。不过个人认为最有效的办法就是编程时不要使用这种形式的表达式,将递增、递减、逗号等单独运算,对绝大多数编译器,这样不会降低效率。然而却减少了代码被编译器误读的可能性,也使你的代码更清楚易懂,可谓一举两得。

最新回答共有2条回答

  • 寒冷的期待
    回复
    2026-04-03 09:42:44

    (1)先算a%b=3,再算b/a=1,最后相加得结果4。a、b值不变。规则:先乘除/取模,后加减,和数学习惯一样。(2)先算a/b=0,再加c得结果5,最后c++。a、b值不变,c=5+1=6。规则:在以上基础上,变量右边的递增/递减运算符最后算,反之,变量左边的递增/递减最先算,仅次于括号、下标等。(3)同理,先算-b-c得结果-9,然后b++。a、c值不变,b=4+1=5。规则同上,负号优先于乘除。不过你最好加上空格,如-b++ - c,这样可以看得出第一个“-”和“++”是和b结合的单目运算符,第二个“-”是b和c之间的双目运算符。(4)先算括号中的a,b,c,依次计算,括号内的结果是最后一个表达式c的值为5,前两个表达式结果被丢弃,其过程也没有造成任何影响;然后算--c,c的值变为4;接着算5,a,4得最终结果4;最后算a++,a的值变为4。这个比较复杂,最后a=4,b不变,c=4,结果为4。规则:括号最优先,逗号顺序运算各个表达式,得到最后一个表达式的值,其优先级最低,仅次于变量右边的递增/递减运算符,其他的上面都说过了。需要注意的是,这里是按照ANSI C的标准进行解读的,实际上不少编译器没有真正完全按照ANSI C标准去写,情况可能有所不同。如果你不放心,可以把它们拆分开来都编译一遍做试验,一切要以你用的编译器的实际情况为准。不过个人认为最有效的办法就是编程时不要使用这种形式的表达式,将递增、递减、逗号等单独运算,对绝大多数编译器,这样不会降低效率。然而却减少了代码被编译器误读的可能性,也使你的代码更清楚易懂,可谓一举两得。

上一篇 元音字母在开头发什么音

下一篇 第6、7章实验