day2
1.基础知识
1.1 计算机结构
1.2 什么是程序
广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。
1.3 数据
定义:送入计算机的数字,字母,符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据
1.3.1 数值数据
进制
十进制 0~9
八进制 0~7 0开头
二进制 0,1
十六进制 0~9 a、b、c、d、e、f 0x开头
/*****************进制之间的转换********************/
其他进制转十进制
(1)位权表达式
十进制转二进制:
171
(1)短除法
(2)凑方法
八进制转二进制:一位换三位
074
111 100
十六进制转二进制:一为换四位
0xaf
1010 1111
二进制转八进制:三位换一位
0111 1010
001 111 010
1 7 2
0172
二进制转十六进制:四位换一位
0111 1010
7 a
0x7a
1.3.2非数值数据
字符数据 ASCII
'a' 'b' '1'
1.4C语言的框架
#include <stdio.h>
int main()
{
return 0;
}
1.5词法符号
1.5.1关键字
关键字是由系统预定义的词法符号,有特定的含义,不允许用户重新定义
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
所有关键字均为小写
1.5.2标识符
标识符是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等
C语言的命名规则如下:
1) 标识符由一个或多个字母、数字或下划线组成
2)标识符的第一个字符必须是字母或下划线
3)标识符不能与任何关键字相同
大小写敏感; ab Ab aB AB
命名有一定含义,便于记忆,增加可读性
1.5.3分隔符
分隔符是用来分隔其他的词法符号,主要包括:
空格符、制表符(tab)、换行符号、注释
通过对分隔符的恰当运用,使得代码的外观格式更为清晰易读,还可以帮助分析程序中的语法错误
// 注释一行
/*
代码块 ---- 注释一段代码
*/
1.5.4运算符
算术运算符
+ - * / %
逻辑运算符
&& || !
逻辑与 &&: 全真为真, 有假就假
表达式1 && 表达式2
真 真 真
真 假 假
假 真 假
假 假 假
逻辑或 ||:有真就真,全假为假
表达式1 || 表达式2
真 真 真
真 假 真
假 真 真
假 假 假
逻辑非
!(表达式)
若果表达式为真,整体为假
假 真
短路法则:
逻辑与, 如果第一个表达式为假,那么后一个表达式不需要判断(也不会执行表达式),整体为假
逻辑或, 如果第一个表达式为真,那么后一个表达式不需要判断(也不会执行表达式),整体为真
关系运算符
> < <= >= == !=
真:1(非零为真)
假: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
&1000 1111
1000 1010
|0101 0000
1101 1010
赋值运算符
= 把等号右边的值,赋值给等号的左边
注意:等号的左值不能为一个常量
复合赋值
+= 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);
eg:
int a;
int x = 10, y = 20;
a = (x = 20, y + 1 , x + y);
printf("%d\n", a);
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.5.5标点符号
C语言中的标点符号有逗号、分号、冒号、花括号、圆括号。
1.6 打印调试
1.6.1 宏定义
#define 宏名 替换内容 ---宏名一般大写
eg:
#define N 10 + 10
printf("%d\n", N*N); 10 + 10 * 10 + 10 ... 120
作用:
(1)便于修改
(2)提高阅读性
1.6.2 打印调试的宏
printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__);
1.7数据类型
char 字符型 1字节 无符号:0~255 有符号:-128~127
short 短整型 2字节
int 整型 4字节
long 长整型 8字节
long long 长长整型 8字节
float 单精度浮点型 4字节 5~6位
double 双精度浮点型 8字节 15~16位
char c1= 128; //出错,数据越界(-128)
char c1= 129; //出错,数据越界(-127)
unsigned char c2= -1; //出错,数据越界(255)
short a = 32768;
标签:10,字节,int,24.07,运算符,--,31,表达式
From: https://blog.csdn.net/RIOWLee/article/details/140826995