关于C语言的几个很基础问题

来源:百度知道 编辑:UC知道 时间:2024/08/22 03:39:38
1.改变大纲后的考试内容跟原来有什么区别?主要的就可以了,关系到考试的对错问题的
2.教材18页赋值表达式问题。当赋值号左边的变量为无符号整型,右边的值为有符号整型时,把内存中的内容原样复制。右边数值的范围不应该超出左边变量可以接受的数值范围。同时需要注意,这时负数将转换为正数。例如,变量a被说明为unsigned类型,在进行了a=-1的赋值操作后,将使a中的值为65535. 为什么是这个结果呢?请教大家了
3.关于自加和自减符号。++i,i++的区别,例如,若变量i为int类型,且已有值为5;则表达式++i,先进行i增1运算,表达式的值为6;i++表达式的值为5,i进行增1运算,使i中的值为6。 这是课本中的解释,不过我还是没看明白!
3.自加自减运算符的运算方向为自右向左。例如,有一表达式-i++,其中i原值为3.此时自加运算符为后缀运算符,(i++)值为3,因此-(i++)的值为-3,然后i自增为4.这个也不理解是为什么

希望大家不吝赐教!!!谢谢朋友们了!!!

我来帮你解决下面两个题吧..上面的我也不会...
其实不管是++i 或是i++ i的值都自加了1..所以i的值就为六..
不同的是++i是i先进行自加了以后再取的表达式的值..而i++是先取的
表达式的值再自加1的..所以 ++i=6 i=6 i++=5 i=6

最下面的题:

就跟上面我说的那个题一样....他是先把i++的值取出来=3再取负就为-3
而i的值还是自加了1所以就为4

第一个问题不清楚,只是对于C来说指针是最重要的,也是最难学的.
第二个问题,因为有一个负号,而负号在二进制中是第一位是1,把-1赋给a时,是先把-1取反加1再赋值给a而a是无符号的,所以是65535.
第三个,i++是先取i再++,而++i是先++再取i.
比如说:i=1;printf("%d",i++);输出是1
i=1;printf("%d",++i);输出是2.