设有定义 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++
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/18 12:02:59
![设有定义 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++](/uploads/image/z/1102127-23-7.jpg?t=%E8%AE%BE%E6%9C%89%E5%AE%9A%E4%B9%89+int+a%3D3+b%3D4+c%3D5%2C%E6%B1%82%E4%B8%8B%E5%88%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%80%BC%2C%E5%9C%A8%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%BF%90%E8%A1%8C%E5%90%8E%2Ca+b+c%E7%9A%84%E5%80%BC%E5%88%86%E5%88%AB%E6%98%AF%E5%A4%9A%E5%B0%91%3F%281%29a%25b%2Bb%2Fa+%282%29a%2Fb%2Bc%2B%2B+%283%29-b%2B%2B-c+%284%29%28a%2Cb%2Cc%29%2Ca%2B%2B%2C--c%2CC%2B%2B)
设有定义 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++
设有定义 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++
设有定义 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++
(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标准去写,情况可能有所不同.如果你不放心,可以把它们拆分开来都编译一遍做试验,一切要以你用的编译器的实际情况为准.不过个人认为最有效的办法就是编程时不要使用这种形式的表达式,将递增、递减、逗号等单独运算,对绝大多数编译器,这样不会降低效率.然而却减少了代码被编译器误读的可能性,也使你的代码更清楚易懂,可谓一举两得.