张照行160809332 的第二次作业 张照行

  1. C语言基本数据类型及其占用的内存空间大小分别是:int:4字节;short int:2字节;long int :4字节;unsigned int:4字节;unsigned short int :2字节;unsigned long int:4字节;char :1字节;float:4字节;double:8字节。
  2. 算数运算符有:+  -  *  /  %   ++   --
  3. 关系运算符有:>   <      ==    >=    <=    !=     <>
  4. 逻辑运算符的优先顺序是:!   &&    ||
  5. 赋值运算符有:=   +=    -=    *=    /=    %=
  6. 下面代码的输出结果是什么?请解释原因。

6.

#include<stdio.h>
int main()
{
    char c=132; printf("%d",c);
}

输出的结果是-124,因为char占一个字节,132的二进制为:1000 0100,第一位为1,计算机识别为负数,取反为1111 1011,进位加一为1111 1100,所以输出-124

7. int a=-7; printf(“%d”,a>>1);

#include<stdio.h>
int main()
{
 int a=-7; printf("%d",a>>1);
}

输出的结果是-4,因为int占四个字节,-7是负数,存储取反进一为:1111 1111 1111 1111 1111 1111 1111 1001

                                                                          -7>>1:1111 1111 1111 1111 1111 1111 1111 1100

                                                                 再取反进一为 :0000 0000 0000 0000 0000 0000 0000 0100,所以输出为-4

8. int a=7;

   int b=8;

   printf(“%d”,a&b);

#include<stdio.h>
int main()
{
   int a=7;
   int b=8;
    printf("%d",a&b);
}

输出结果为0,因为&是按位与,上下都是1才是1,否则为0,7是0000 0000 0000 0000 0000 0000 0000 0111

                                                                           8是0000 0000 0000 0000 0000 0000 0000 1000,所以32位都为0,输出为0

9. int a=7;

    int b=8;

    printf(“%d”,a^b);

#include<stdio.h>
int main()
{
   int a=7;
   int b=8;
    printf("%d",a^b);

}

输出结果为15,因为^是按位异或,不相同的为1,相同的为0,7是0000 0000 0000 0000 0000 0000 0000 0111

                                                                                 8是0000 0000 0000 0000 0000 0000 0000 1000,

                                                                          a^b为:0000 0000 0000 0000 0000 0000 0000 1111,所以输出15

原文地址:https://www.cnblogs.com/160809332zzh/p/5893951.html