C语言基础

day2

1.基础知识

1.1.冯诺依曼模型

1.2.程序

广义:为了实现特定目标而余弦设计的可操作性步骤。

狭义:系统可以识别的有序指令。

机器语言:

使用机器指令(1,0)来设计程序

1.3数据

定义:送入计算机的数字,能够运算成为计算机数据,其余为非数值数据。

1.3.1数值数据

进制

十进制

二进制

八进制  0开头

十六进制   0x开头

其他进制转十进制

        (1)维权表达式

十进制转二进制:

        (1)短除法

         (2)凑方法

八进制转二进制:一位换三位

十六进制转二进制:一位换四位

1.3.2非数值数据

字符数据

‘a’‘b’‘c’‘1’‘2’‘3’(有引号为字符,无引号为数字)

ASCII码

常用可记:

‘\0’--0;‘\n’--10;‘ ’--32;

‘0’--48(字符0-10ascii码从0开始为连续);

‘A’--65(字符A-Zascii码从A开始为连续);

‘a’--97(字符a-Zascii码从A开始为连续);

gcc编译步骤

        1.预处理: 宏替换、条件编译、去注释、头文件的展开等

                gcc -E test.c -o test.i

        2.编译:检查语法错误,将c文件生成汇编文件

                gcc -S test1.i  -o

        3.汇编:把汇编文件生成机器码

        4.连接:连接相关.o和相关库

1.4C语言的框架

#include<stdio.h>

int main{

return 0;

}

1.5词法符号

1.5.1关键字

auto  break case char const(修饰限定) do continue for float typedef

有颜色,皆小写,不允许重新定义。

1.5.2标识符

程序员自己取的名字(宏名,变量名,函数名和自定义类型名)

1.5.3分隔符

空格符、制表符(tab)、换行符、注释(//,/*    */)

1.5.4运算符

算数运算符:+ - * / %(必须为整型),有优先级

逻辑运算符

&& || !

逻辑与 &&:全真为真,有假必假(比如谈恋爱)

逻辑或  ||:有阵就真,全假为假

逻辑非 !:表达式为真,整体为假

短路法则:逻辑与第一个表达式为假,后一个表达式必须要判断(也不会执行),整体为假

                  逻辑或第一个表达式为真,后一个表达式必须要判断(也不会执行),整体为真

关系运算符

> < <= >= == !=

真:1(非0为真)

假:0

关系运算符的结果 只有0和1

位运算符

 &  |  ~  >>   <<
       
位运算是二进制位的运算      
C语言存的都是补码   正数:三码合一    负数:有区别
把最高位作为符号位   0:正数   1:负数
     
     
7
0000 0111
     
-7
1000 0111      
     
     
原码:最高位符号位,其余位数值位

7
0000 0111
     
-7
1000 0111      
     
反码:符号位不变,其余位取反
7
0000 0111
     
-7
1111 1000      
     
补码 :反码基础上 + 1      
7
0000 0111
     
-7
1111 1001        
     
     
补码转原码:
     (1)逆推法
     (2)补码的补码就是原码
     
     
位与&:
  1&1=1  1&0=0  0&1=0  0&0=0
   5 & 3 = 1
   -5 & 3 = 3  
   
位或|:
    1|1=1  1|0=1  0|1=1   0|0=0  
     
位取反~:
    ~1 = 0    ~0 = 1
       
       
       
>>n 右移n位   :右边移出去,左补符号位        
正数:
10 >> 2        
0000 1010    0000 0010    
       
负数:
-13
1000 1101
1111 0010
1111 0011  >> 3    
1111 1110
1000 0001
1000 0010    
     
15   >>  4
-23  >>  2    
       

<<n 左移n位 :  左边移动出去,右边补0
   
正数:    
0000 0111  << 2    
0001 1100
   
负数:
-1
1000 0001
1111 1110
1111 1111   << 3
1111 1000    
1000 0111
1000 1000  

作用:
       
char a = 10;     0000 1010  
a = 8;           0000 1000
   
***************************************清零********************************
 0000 1010   第1位清零          ? &  0 = 0
& 1111 1101                     ? &  1 = ?
   
 1         0000 0001  
 1 << 1    0000 0010
 ~         1111 1101
   
char a = 10;
a = a & (~(1 << 1))
   
   
 & 0000 1010   第1位和第3位清零    
   1111 0101
   
a = a & (~(1 << 1  |  1 << 3))    
a &= (~(1 << 1  |  1 << 3));  
***************************************置位(置1)**********************************
char a = 10;     0000 1010    把第 5 位置1          ? | 0 =  ?  
                                                  ? | 1 = 1
  0000 1010    
| 0010 0000
   
 a = a | (1 << 5);
char a = 10;     0000 1010    把第 5、7 位置1
   
a = a | (1 << 5 | 1 << 7)
   
   
  1111 1010    5~7 置成 101
 

赋值运算符

=  把等号右边的值,赋值给等号的左边  
注意:等号的左值不能为一个常量 

复合赋值

+=         a+=10  --> a = a + 10;

-=

*=

/=

eg:int a = 2;

a +=  20  * 20;        //a = a + (20 * 20);

递增递减运算符

++  --
   
(1)++ -- 独立成一句
   
   前++ 等价与 后++
   前--       后--
(2)在运算式中    
   
  前++ 前--: 先进行自加(自减)运算,运算后的结果作为整体的值
  后++ 后--: 先取值作为整体的值,再进行自加(自减)运算

地址运算符

&  取地址

逗号运算符


   
int a;
a=10,20,30;   每一个式子都会执行
   
   
最后一个式子的结果作为整体的值
   
a = (a + 10, 60, 100 + 30); 

sizeof运算符

用于计算数据类型的大小    --- 结果是数据类型的大小  单位为字节
   
一个字节  --- 8位二进制数  
1024b = 1kb
1024kb = 1mb
1024mb = 1gb                    
1024gb = 1Tb      
   
1GB =  2^3 * 2^10   * 2^10  * 2^10  = 2^33
   
   
sizeof(int)

三木运算符

表达式1 ? 表达式2 : 表达式3
如果表达式1为真,则执行表达2,
          假,        3
   
三目运算符用于简单的判断,复杂的用if else   switch case 

1.6打印调试

宏定义

#define 宏名 替换内容           ---宏名一般大写
eg:
   #define N 10 + 10
   
   printf("%d\n", N*N);    10 + 10 * 10 + 10 ...  120

(N 为(10+10)时,打印后结果为400)
   
   
作用:
  (1)便于修改
  (2)提高阅读性

1.7数据类型

基本数据类型

数据类型大小

分类型存储,避免浪费空间

signed char类型中,规定1000 0000为-128

unsigned char类型中,1111 1111为255(最大)

越界报错,short类似

外:浮点型存储方式--科学计数法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值