C基础(学习)2024.7.17

Linux基本命令,vi编译器的使用,简单的编程步骤,程序语言,gcc编译器编译过程,进制转换

相关知识可以查看文档http://t.csdnimg.cn/CmqhC

数值表示,词法符号,变量,常量相关知识可以查看文档http://t.csdnimg.cn/jJIe2

目录

一、运算符和表达式:

1.算术运算符:+,-,*,/,%,++,--

        (1)/: 整数相除,向下取整

        (2)%: 只能用于整数运算,取余

        (3)++: 自增        -- :自减

2.赋值运算符: =,+=,-+,*=,/=

3.关系运算符:>,<,<=,>=,==,!=

4.逻辑运算符:&&,||,!

(1)&&(逻辑与)

(2)||(逻辑或)

(3)!(逻辑非)

(4)短路法则/截断法则

5.位运算符:&,|,^,~,<<,>>,

(1)&(位与)

(2)|(位或)

(3)^(异或)

(4)~(取反)

(5)<<(左移)

(6)>>(右移)

(7)置一公式和置零公式

6.特殊运算符:

(1)三目运算符

(2)sizeof( )

7.运算优先级:

二、输入输出

1.按字符输入输出

(1)按字符输出 putchar()

(2)按字符输入 getchar()

2.按格式输入输出

(1)按格式输出printf()

        格式字符:

(2)按格式输入scanf()

        垃圾字符问题:只要第二次想输入char类型就会接收上次的回车

        回收垃圾字符方法:

一、运算符和表达式:

        表达式是指由运算符、运算量和标点符号组成的有效序列,目的是用来说明一个计算过程。

1.算术运算符:+,-,*,/,%,++,--

        (1)/: 整数相除,向下取整

        (2)%: 只能用于整数运算,取余

                例如:10%3 = 1

        (3)++: 自增        -- :自减

                printf("%d\n",a++);  //++在后,先打印,再自加

                //先执行printf("%d\n",a); 再执行a=a+1; 

                printf("%d\n",++a);  //++在前,先自加,再打印

                //先执行a=a+1; 再执行printf("%d\n",a);

2.赋值运算符: =,+=,-+,*=,/=

        (1)int b = ++a;  //先自加然后再赋值

                相当于:先执行a=a+1; 再执行 b=a;

        (2)int b= a++;  //先赋值再自加

                相当于: 先执行 b=a; 再执行 a=a+1;

        (3)a+=2;

                相当于:a=a+2;

3.关系运算符:>,<,<=,>=,==,!=

        用来判断两者的关系,返回1或0。

        <          小于            a<b            a小于b时返回真,否则返回假

        <=        小于等于            a<=b            a小于等于b时返回真,否则返回假

        >          大于            a>b            a大于b时返回真,否则返回假

        >=        大于等于            a>=b            a大于等于b时返回真,否则返回假

        ==        等于            a==b            a等于b时返回真,否则返回假

        !=         不等于            a!=b            a不等于b时返回真,否则返回假

4.逻辑运算符:&&,||,!

        非0代表真,0代表假 

(1)&&(逻辑与)

        全真则真,一假则假。全是真的才是真,只要有假就是假。

(2)||(逻辑或)

        一真则真,全假则假。只要有真的就是真,全都是假的才是假。

(3)!(逻辑非)

        非真为假,非假为真

(4)短路法则/截断法则

        ||(逻辑或)运算中: 如果前面的表达式为真,则后面的表达式不执行。

        &&(逻辑与)运算中: 如果前面的表达式为假,则后面的表达式不执行。

5.位运算符:&,|,^,~,<<,>>,

(1)&(位与)

        全一则一,有零则零

        例如:1111 0101 & 1111 1101 = 1111 0101

(2)|(位或)

        有一则一,全零则零

        例如:1111 0101 | 1111 1101 = 1111 1101

(3)^(异或)

        不同为一,相同为零

        例如:1111 0101 ^ 1111 1101 = 0000 1000

(4)~(取反)

        按位取反,零变成一,一变成零

        例如:~ 0111 0101 = 1000 1010

~15:

正数原码:0000 1111

正数补码:0000 1111

取反~:1111 0000

~-1:

负数原码:1000 0001

负数反码:1111 1110

负数补码:1111 1111

取反~:0000 0000

(5)<<(左移)

        左移几位,右边就补几个零

例如:计算 -5 << 3 = -40

        -5的原码:1000 0101;反码:1111 1010;补码:1111 1011;<< 3左移三位以后:补码为:1101 1000,转换为反码为1101 0111,转换为原码为1010 1000,对应的值为-40

(6)>>(右移)

        右移几位,左边就补几个符号位,整数补0,负数补1

例如:计算 -5 >> 3 = -1

        -5的原码:1000 0101;反码:1111 1010;补码:1111 1011;>> 3右移三位以后:补码为:1111 1111,转换为反码为1111 1110,转换为原码为1000 0001,对应的值为-1

(7)置一公式和置零公式

        置一公式:a | (1<<n)

        置零公式:a & (~(1<<n))

6.特殊运算符:

(1)三目运算符

        格式:表达式1 ? 表达式2 : 表达式3

        运算法则:先判断表达式1是否成立,如果成立执行表达式2,否则执行表达式3;

(2)sizeof( )

        格式:sizeof(数据类型或变量名);

7.运算优先级:

单算移关与,异或逻条赋,从右向左单条赋

        单目运算符    !    ~    ++    --

        算术运算符    *    /    +    -

        移位运算符    <<    >>

        关系运算符    <    <=    >    >=    ==    !=

        位与运算符    &

        异或运算符    ^    |

        逻辑运算符    &&    ||

        条件运算符    ? :

        赋值运算符    =    -=    +=    *=    /=    %=

二、输入输出

        三要素:功能,参数,返回值

1.按字符输入输出

(1)按字符输出 putchar()

        格式:int putchar(int c);

        功能:向终端输出一个字符

        参数c:要输出字符的ASCII值或者’字符‘

        返回值:要输出字符的ASCII值

(2)按字符输入 getchar()

        格式:int getchar(void);

        功能:从终端输入一个字符

        参数:无

        返回值:输入字符的ASCII值。

2.按格式输入输出

(1)按格式输出printf()

       int printf(const char *format, ...);    

        功能:按照指定格式向终端输出

        参数format:用双引号括起来的格式控制串和输出表。

        返回值:输出字符的个数

        格式:printf("格式控制串",输出表)

                格式控制串:包含两种信息

                        1.普通字符:原样输出

                        2.格式说明:修饰符%后面加格式字符,用于指定输出格式

                输出表:要输出的数据,可以没有;也可以多个,用逗号分隔

        格式字符:

        %d        int

        %ld        long

        %f        float

        %lf        long

        %c        char

        %s        字符串

        %x        十六进制

        %o        八进制

        %u        十进制无符号整数

        %p        地址

        %e        指数

        %m.n含义:

                .n:对实数指定小数点后的位数(四舍五入)

                       对字符串指定输出的位数

                m:位宽,输出数据的域宽,数据长度<m,左边补空格,否则按实际输出

                 -:左对齐,默认右对齐

                0:输出数值时指定左边不用的空位置自动补0

(2)按格式输入scanf()

        int scanf(const char *format, ...);

        功能:按格式从终端输入

        参数:同printf

        返回值:正确输入数据的个数。当第一个数输入格式不正确时,会直接返回0。

        格式:scanf("格式控制串", 地址表);

                地址表:变量的地址,常用取地址运算符&

        垃圾字符问题:只要第二次想输入char类型就会接收上次回车

               注意:scanf函数输入回车符的问题,当用%c方式输入字符时,回车符会被下次的%c接收到。其他给格式不会出现这种问题。

        回收垃圾字符方法:

                1.利用空格,可以回收一个或多个空格、回车和tab

                2.利用%*c,只能回收任意一个字符

                3.利用getchar( ),只能回收任意一个字符,一般用于循环里面

  • 39
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值