C语言基础开奖开讲-(变量至运算符)

C语言基础

程序编译

  1. gcc xx.c会默认生成一个a.out的可执行文件,在a.out所在目录下执行,执行./a.out
  2. 程序编译可以用gcc XX.c -o XX ,注意不要命名成xx.c,这样会覆盖原先的xx.c文件内容。
  3. gcc xx.c -o xx -g -wall,-g -wall的意思是开启所有的语法警告。
  4. gcc只检查语法错误,不会检查逻辑错误。
  5. 每次修改完程序,都必须要执行一次gcc。

hello world程序

int main()
{
    return 0;
}
  1. 可执行程序一执行,就会去找一个叫做main的函数,然后运行main{}里的语句。
  2. 一个.c文件有且只能有一个main的函数。
  3. 一个函数碰到return就会结束,return后面的语句将永远不会被执行。
  4. 如果是main函数,他可以将前面的int省略,return也是可以省略的。
  5. main(int argc,char *argv[])
  6. include 是一个C语言标准输出输入库。

注释

  1. //代表单行注释,
  2. /* code */代表多行注释。
  3. /* 会与碰到的第一个//*/匹配
  4. //可以用来附加解释的作用,或用来注释代码
  5. 写清文件名,文件产权,文件制作方,如果是某人,要写清联系方式。

printf:打印函数

  • 打印""里面的语句
  • \n是转义字符代表换行
int main()
{
    int a=6;
    float b=9.8;
    printf("a=%d,b=%f",a,b);
}
  • %d:是占位符,输出整数
  • %c是占位符,输出字符
  • %f是占位符,输出浮点数
  • %lf是占位符,输出double类型的数据
  • printf("%m.nf");
    • m

代码格式

main()
{
    
}
注意:每碰到一个{,就来个tab退格

常量

  1. 1,2,3,4:整形常量
  2. 'a','b','c':字符常量
  3. 1.2,2.3:浮点常量
  4. "hello world":字符串常量
  5. 0xfff321:地址常量
  6. 常量的特点:
    • 常量不会改变
    • 常量不能作为左值
    • 0,const(只读常量),define(宏常量)

变量

  1. 变量的特点
    • 可以改变的量
    • 可以作为左值,也可以作为右值
  2. 变量的定义
    • 在shell脚本里:变量名=值
    • 在C语言里十数据类型加变量名
    • 同时定义多个同类型变量:数据类型 变量a,变量b;
  3. 数据类型
    • 整形数据类型:int
    • 字符型数据类型:char
    • 浮点型:float(单精度),double双精度()
    • 数据类型的作用
      1. 标志着后面的变量具体是接受什么类型的值
      2. 这个变量再内存中占几个字节
      int:4
      char:1
      float:4//float是精确到
      double:8//double是精确到 
      
  4. 整形变量
    • int value=1;
    • int value;value=1;
  5. 字符变量
    • char ch='c'
    • char ch;ch='d'
  6. 浮点变量
    • float f1=1.2
    • float f2=1.4
  7. 变量的使用
    • int value;value=8;

标识符的规范

  1. 硬性规范:
    1. 不能用数字开头
    2. 不能与C语言关键字相同
    3. 只能由字母下划线和数字组成
  2. 建议规范
    1. 不能用拼音,多查字典
    2. 尽量使用驼峰命名法numOfStudent,num_of_student
    3. 见名知义

地址

  • 内存:字节:Byte式计算机存储的最小单位
  • 1M=1024KB;1KB=1024Byte;1Byte=8bit
  • 地址:地址是每一个字节所对应的编号
  • (中国===>家庭(屋子)===>门牌号)
  • (计算机===>字节===>地址)

进制

  1. 二进制:0~1
  2. 八进制:0~7
  3. 十进制:0~9
  4. 十六进制:
    • 0~15:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。
    • 0X开头

大端小端存储法

  • 小端法存储:低位上的数存储在低的地址所对应的字节里。hston
  • 大端法存储:低位上的数存储在高的地址所对应的字节里。hntos
  • 用处:用于网络传输内容的时候。

打印特殊字符

- 如何打印"":printf("\"abc\"\n");
- 如何打印'':printf("'abc'\n");
- 如何打印%:printf("%%");
- 如何打印\:printf("\\");

字符与ASCll码

  • 字符是一个特殊的整形,只占8位
  • 记住的字符
int main()
{
    char ch='a';
    printf("ch=%d\n",ch);
    //'2'+'2'=100='d'
}
'\0'=0
'0'=48
' '=32
'A'=65
'a'=97
  • 全球停用编码:unicode编码

scanf(scan formatter:格式化输入函数)

  • scanf("%d",&a);//&a:取a变量的地址
  • scanf后面必须是取某个变量的地址
  • 一个变量必须先定义出来再进行scanf
  • scanf("%d%d",&a,&b);
  • scanf后面不要加\n。

getchar()与putchar()

int main()
{
    char ch;
    ch=getchar();
    putchar(ch);
}
输入字符可以直接输出。

数据类型转换

  • 隐式转换:精度小的====>精度大的
    • char====>short int====>float====>double
  • 强制类型转换:(type)变量
int a=9;
int b=8;
float c=(float)a/b;//强制转换的是a的值,而不是a,所以a还是int类型。

运算符

  • 注意点:计算机只进行相同类型数据的运算,最后计算出来的结果也与他们的数据类型相同。
float a=9;
int b=8;
float c=a/b;
printf("c=%f",c);//结果为1.125000
分析:通过隐式转换,将b改为float类型,8.000000,然后计算结果。
  1. 算数运算符:+ - * / % ++
    • %后面必须是整数
    • ++
      • 前缀++
      int a=9;
      int b=++a;//a=a+1,b=a.
      
      • 后缀++
      int a=9;
      int b=a++;//b=aa=a+1.
      
      • 前缀--
      int a=9;
      int b=--a;//a=a-1,b=a.
      
      • 后缀--
      int a=9;
      int b=a--;//b=a,a=a+1.
      
  2. 位运算符
    • |:位或:有1为1
    • &:位与:有0为0
    • ^: 异或: 只要不同就为1
    • ~: 取反:先得补码再取反
    a=3;
    ~a=-4;
    3:0000 0011
    对补码取反:1111 1100(此时变为负数)
    反码为:1111 1011
    原码为:0000 0100
    
    a=-3;
    ~a=2;
    -3:1000 0011
    码反:1111 1100
    补码为:1111 1101
    取反:0000 0010
    原码:0000 0010
    
  3. 原码,反码,补码
    • 正数的原码和反码补码相同
    • 负数的反码在原码的基础上符号位不变,后面依次取反。负数的补码在反码基础上+1
    问题:1+(-1)会得到结果-2
    数据在内存中是以数据的补码存在
    数据是以补码存在,原码输出。
    
  4. 左移<<
a=3;
b=a<<2;//b=12
0000 0011
0000 1100
b=a>>2;//b=0
0000 0011
0000 0000
a=-3
b=a<<2;//b=-12
1000 0011
1111 1100
1111 1101
1111 0100
1111 0011
1000 1100
a=-3
b=a>>2;//b=-1
1000 0011
1111 1100
1111 1101
1111 1111
1111 1110
1000 0001
  1. ch的范围
    • -128~127
    char ch=127;可以正常输出
    char ch=128;输出为-128//1000 0000 默认为-128
    char ch=129;输出为-127.
    

小结:总的来说大部分知识都听过,但是在最下面讲的计算机都是以补码的形式计算,原码输出,二进制进行存储的。这一点以前虽然知道但没细究,所以这次计算过了一次~运算突然发现自己以前计算的方式有点错误,以前3取反我算到1111 1100时根本没想到会变成负数,所以多了一步负数转原码的过程。总的来说,还是学到了新的知识。

你可能感兴趣的:(C语言基础开奖开讲-(变量至运算符))