7.3 C语言

笔记

一.运算符(昨天延续)

1.1逻辑运算符

&&(与):全真则真,一假则假

||(或):一真则真,全假则假

!(非):非真则假,非假则真

示例:   0为假   1为真

#include<stdio.h>
int main(int argc, char const *argv[])
{
    printf("%d\n",2>3);//0
    printf("%d\n",22>3);//1
    printf("%d\n",!(2>3));//1
    printf("%d\n",12>3&&8<6);//0
    printf("%d\n",12>3||8<6);//1
    return 0;
}

截断法则

逻辑与运算中,前边的表达式结果为假,后边的表达式不再执行,直接返回假

逻辑或运算中,前边的表达式结果为真,后边的表达式不再执行,直接返回真

示例:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int a=5,b=6,c=7,d=8,m=2,n=2;
    (m=a>b)&&(n=c>d);
    printf("%d  %d",m,n);//0    2
    return 0;
}

1.2位运算符

位运算中整数要以二进制的补码形式进行运算,得到结果后转为原码得到整数值

二进制数 0 1

二进制码:

原码

反码

补码

正数

相同

相同

相同

负数

相同

符号位其他取反

反码+1

示例:

原码;

7:        0000 0000 0000 0000 0000 0000 0000 0111

-7:       1000 0000 0000 0000 0000 0000 0000 0111  

反码:(符号位为左边第一位  0为正   1为负)

7:      0000 0000 0000 0000 0000 0000 0000 0111

-7:     1111 1111 1111 1111 1111 1111 1111 1000  

补码:

7:      0000 0000 0000 0000 0000 0000 0000 0111

-7:     1111 1111 1111 1111 1111 1111 1111 1001    

& | ^ ~ << >>

&位与:全1则1,有0则0

示例:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int a=12,b=10;
    int c=a&b;
    //位运算先将十进制转换成二进制,再将二进制按位进行与运算得到结果
    //12:1100
    //10:1010
    //& :1000
    printf("%d\n",c);//8
    return 0;
}

|位或:有1则1,全0则0

^异或:相同为0,不同为1

示例:实现两个变量值的交换

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int a=12,b=10;//a=1100,b=1010
    a=a^b;//a=0110=6,b=1010=10
    b=a^b;//a=0110=6,b=1100=12
    a=a^b;//a=1010=10,b=1100=12
    printf("%d  %d",a,b);
}

~取反:1---->0 0------>1

示例:

#include<stdio.h>
int main(int argc, char const *argv[])
{
    int a=7;
    int c=~a;
    printf("%d\n",c);//-8

}

补码:

7:        0000 0000 0000 0000 0000 0000 0000 0111

~7:      1111 1111 1111 1111 1111 1111 1111 1000

反码:

~7:      1111 1111 1111 1111 1111 1111 1111 0111

原码

~7:      1000 0000 0000 0000 0000 0000 0000 1000    =-8

<<左移

左移n位右边n0

6<<2==24

公式

6*2^2=24

-6*2^2=-24

>>右移

右移n最右边舍弃n

6>>2==1

公式

6/2^2=1

-6/2^2=-2

置一公式:a|(1<<(n-1))                        \\ a为要置一或零的数

置零公式:a&(~(1<<(n-1)))                    \\n为该数要置一或零的位数

1.3关系运算符

> >= < <= == !=

 ==等于    =赋值

1.4三目运算符(选择运算符)

? :

1.5赋值运算符

= += -= *= /= %=

1.6运算符优先级

单算移关 异或

单目运算符 ~ ++ -- !

算术运算符 * / % + -

移位运算符 << >>

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

运算符 &

异或运算符 ^

运算符 |

逻辑运算符 && ||

条件运算符 ?:

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

  1. 二.变量

    1. 变量:程序运行过程中会发生变化

      格式:

      存储类型 数据类型 变量名

      存储类型:决定变量存储位置

      数据类型:决定变量开辟空间大小

      变量名:遵循标识符命名规则

      名字

      字节大小

      int

      整型

      4

      char

      字符型

      1

      short

      短整型

      2

      long

      长整型

      8

      float

      单精度浮点型

      4

      double

      双精度浮点型

      8

      printf("%ld\n",sizeof(long));可查看类型所占字节的大小

      局部变量和全局变量的区别

      局部变量

      全局变量

      定义位置

      函数体内部

      函数体外部

      初值

      未初始化,值是随机值

      未初始化,值是0

      存储位置

      栈区

      全局区

      生命周期

      同当前函数体共存亡

      同整个程序共存亡

      作用域

      当前函数体内部

      整个程序

三.常量

程序运行过程中不会发生变化

3.1 整型常量

八进制 十进制 十六进制

3.2 字符常量

字符 由' '包裹一个字符

字符串 由" "包裹,由'\0'作为字符串的结束标志

字符数组

3.3 浮点型常量

float         double

3.4 标识常量

宏定义:

格式:#define 宏名 常量值或表达式或代码段

宏名:一般用大写表示,为了和普通变量区分开

注意:先原样替换,再计算。

示例:

#include<stdio.h>
#define N 2
#define M N+2
#define MUN 2+M*3+1
int main(int argc, char const *argv[])
{
    printf("%d  %d  %d\n",N,M,MUN);//MUN=2+2+2*3+1=11
    return 0;
}

作业

宏定义要先原样替换再计算

a=10/(2+1*2+1/2+1*2+1);

因为是整形除法向下取整,所以a=10/7,a=1

宏定义要先原样替换再计算

k=5+5*5+5*5=55 选c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值