day02(C基础)词法符号

目录

词法符号

1.关键字 32个

2.标识符

命名规则:

驼峰命名:

3.运算符

3.1算术运算符   + - * / % ++ --

3.2逻辑运算符   &&  ||  !

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

3.4位运算符 & | ^ ~ << >>

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

3.6条件运算符(三目运算符):

4.运算符优先级

5.标点符号: , ; () {} []

6.分隔符:换行  空格  tab


词法符号

1.关键字 32个

概念:由系统定义的具有 特殊功能的词法符号

存储类型:决定变量存储的位置
auto(自动),static(静态),extern(外部引用),register(寄存器)

数据类型:决定变量开辟的空间大小
int(整型),char(字符),short(短整型),long(长整型),float(单精度浮点型),double(双精度浮点型),signed(有符号),unsigned(无符号)

构造数据类型
struct(结构体),enum(共用体),union(枚举)

分支
if,else,switch,case,default

循环
for,do,while,go_to,break,continue

其他
void(空),const(常量化)),sizeof(计算内存空间大小),return(返回值),volatile(防止编译器优化),typedef(重定义)

2.标识符

命名规则:

1.由字母,数字,下划线_组成
2.开头不能是数字
3.不能和关键字重复
4.最好见名知意

驼峰命名:

小驼峰命名:niceDay
大驼峰命名:NiceDay

3.运算符

3.1算术运算符   + - * / % ++ --

/ :整数相除,结果向下取整(舍弃小数点)

#include<stdio.h>
int main()
{
   int a=5/2;
   printf("%d\n",a);  //2

   float a=5/2;
   printf("%f\n",a);  //2.000000   默认打印小数点后六位

   float a=5.0/2;
   printf("%f\n",a);  //2.500000

   float a=(float)5/2;		//强制转换  只在当前所在行生效
   printf("%f\n",a); //2.500000
}

% :取余(只能用于整数运算)
5%2==1
a%2=0;//偶数     a%2=1;//奇数

= :赋值

++ :自加1(单目运算)
i++;//i+i+1;
只要语句中不只有++一种操作:
++在前:先自身+1,后做其他操作
++在后:先做其他操作,后自身+1

独立成句:
int a=1000;
   1)++a
       printf("%d\n",a);  //1001
   2)a++
       printf("%d\n",a);   //1001
赋值运算中:
int a=1000;
    1)int b=++a;   //+  =
      printf("%d %d\n",a,b);  //1001,1001
    2)int b=a++;   //=  +
       printf("%d %d\n",a,b);  //1001,1000    b=1000++ :先赋值1000并输出
打印语句中:
interesting qq=99;
     1)printf("%d\n",qq++);  //99
        printf(”%d\n",qq);    //100
     2)printf("%d\n",++qq); //100
        printf("%d\n",qq);  //100

-- :自减1(单目)
i--;//i=i-1
运算规则同“--”

3.2逻辑运算符   &&  ||  !

注意:
1)当数字作为判断条件时,0为假,非0为真。
2)=赋值,将等号右边赋值给左边。
    ==等于

&&逻辑与:全真则真,一假则假  (可看成两者相乘)

代码中表示2<x<8--->: x>2&&x<8
10&&11 ====> 真:1
100>1&&'a'>'b'    假:0

|| 逻辑或: 一真则真,全假全假(可看成两者相加)

x>10 || x<20 x=22 ====>真

0 || 0 =====>假

!逻辑非:取反(单目运算)  非真-->则假,非假-->则真

!(x>10):x=20 =====》假:0


截断法则
逻辑与:前边表达式为假,后面表达式不再执行,返回假
逻辑或:前面表达式为真,后面表达式不再执行,返回真

练习:

#include <stdio.h>
int main()
{
int a=5,b=6,c=7,d=8,m=2,n=2;
(m=a<b)||(n=c>d);
printf("%d  %d",m,n);//m=1  n=2
}
#include <stdio.h>
int main(int argc, char *argv[])
{
    int a = 5, b = 6, c = 7, d = 8, m = 2, n = 2,t=10;
    (m = a > b) || (n = c < d)||(t=11);
    printf("%d  %d %d", m, n,t);      //m=0  n=1   t=10     
    return 0;
}
3.3关系运算符  > < >= <= == !=

a!=b ===》a=10 b=20 ==》真:1
x>=10&&x<=20 20>=x>=10错误

3.4位运算符 & | ^ ~ << >>

真--1   假--0
整数的二进制表示:有3种(原码、反码、补码),整数在计算机中都是以补码形式存储、计算的

\原码反码补码
正数
二进制数本身
二进制数本身
二进制数本身
负数
二进制数本身
原码的 符号位不变 ,其他位按位取反就是反码
反码加1

7-->111
0 0000000 00000000 00000000 00000111
符号位:0:正 1:负数

-7:
1 0000000 00000000 00000000 00000111 原码

1 1111111 11111111 11111111 11111000 反码

1 1111111 11111111 11111111 11111001  补码

&位与: 全1则1,有0则0(乘)

5 & -2:

5:正数 原码 反码 补码:二进制数本身
0…………0000101
-2:
原码:1.…………000010
反码:1…………111101

补码:1…………1111110
&:     0…………0000101-----> 0.......0000100:补码 (正数:原码 反码 补码一样)--->4

| 位或: 有1则1,无1为0(和)

5 & -2:

5:正数 原码 反码 补码:二进制数本身
0…………0000101
-2:
原码:1…………000010
反码:1…………111101
补码:1…………1111110
&:     0…………0000101-----> 0.......0000100:补码 (正数:原码 反码 补码一样)--->4

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

5 ^ -2 : 
-2:

补码:1…………1111110
^: 0…………0000101 ===》1…………1111011:补码
反码:1.。。。。。。1111010
原码:1.。。。。。。0000101----> -5

~ 按位(单目)取反:1取0,0取1

~15 
补码:0.。。。。。01111
~: 1.。。。。。10000 补码
反码:1.。。。。。01111
原码:1.。。。。。10000 -----> -1

<<左移:以补码的形式运算,向左移动:左边丢失 右边补0(左移几位右边补几个0)

10<<2==40
10*2^2=40
-10*2^2=-40

>>右移: 以补码的形式运算,向右移动:右边丢失 左边补符号位(右移几位右边舍弃几位)


10>>2==2
10/2^2=2
1010--->10       //2
-10/2^2=-3

公式
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
a|(1<<n):a:数 n:位

3.5赋值运算符  = += -= /= *= %=
a+=1====>a=a+1

a*=1======》a=a*1
a|=1=====》a=a|1

3.6条件运算符(三目运算符):

语法:表达式1?表达式2(满足时执行):表达式3(不满足时执行)

int a=3, b=5;
int c=a>b ? a++:++b // 6

4.运算符优先级

单算移关与 异或逻条赋

单目运算符:++ -- ! ~
算数运算符:* / % + -
移位运算符:<< >>
关系运算符:> >= < <= == !=
位与运算符:&
异或运算符:^ |
逻辑运算符:&& ||
条件运算符:?:
赋值运算符:= += *= /= %=……

5.标点符号: , ; () {} []

6.分隔符:换行  空格  tab

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值