C语言基础
来源:互联网 发布:ubuntu配置keras环境 编辑:程序博客网 时间:2024/05/22 17:32
首先先来区分编译和链接;
编译:只会检测语法,并不会检测有没有主函数或者其他函数。
链接:链接的时候会严格检测有木有函数的定义。
编译报错描述:Undefined symbols for architecture x86_64:
"_main", referenced from:
因为没有主函数。
类型:
整型(int) :10、367、0、-23、6 4个字节
字符型(char) :‘a’、‘A’、‘3’ 1个字节
字符串 : "dsafefef"、“拉拉啦”、“34223”
浮点型(小数) :1.2、0.0、0.23232、.2424
单精度浮点型(float) :1.4f
双精度浮点型(double):3.4 8个字节
进制转换
十进制
1.由0~9组成,逢十进一
基数:10
167 = 100 + 6*10 + 7
= 7 * 10的0次方 + 6 * 10 的1次方 + 1 * 10的2次方
二进制
1.由0和1组成,逢二进一
2.二进制数值以0b或者0B开头
基数:2
0b1101 = 1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3
= 1 + 0 + 4 + 8 = 13
八进制
1.由0~7组成,逢八进一
2.数值都以0开头
基数:8
0123 = 3 * 8^0 + 2 * 8 ^ 1 + 1 * 8^2
= 3 + 16 + 64
= 83
十六进制
1.由0~9、A、B、C、D、E、F,逢十六进一
2.数值都以0x开头
基数:16
0x12D = D * 16^0 + 2 * 16^1 + 1 * 16^2
= 13 + 32 + 256
= 301
六十五
十进制:65 = 16^1 * 4 + 16^0 * 1
二进制:0b100 0001
八进制:0101
十六进制:0x41
0b1 + 0b1 = 0b10 = 2 ^ 1
0b11 + 0b1 = 0b100 = 2 ^ 2
0b11111 + 0b1 = 0b100000 = 2 ^ 5
如果有n个二进制位,所能表示的最大值0b1111...111, 2^n - 1
二进制和八进制的转换
一个八进制位能表示的最大值:7
三个二进制位所能表示的最大值:0x111 = 7
0574 = 0b101 111 100
0b 001 111 000 110 101 = 017065
二进制和十六进制的转换
一个十六进制位所能表示的最大值:F = 15
// 第一个字节的地址就是变量的地址
int a; // 4个字节
char c; // 1个字节
ASCII码表:有128个单字节字符(ASCII码取值范围0—127)
A65 B66 a97 b98
三目运算符的格式:条件?数值1:数值2(如果条件成立返回1,不成立返回2)
逻辑运算符
逻辑与&& (条件A && 条件B):如果条件A与B同时成立,返回1,其他情况都返回0;
逻辑或|| (条件A || 条件B) :只要两个条件中一个条件成立,就返回1,都不成立才返回0;
逻辑非! :如果条件成立返回0,不成立返回1;
++a:直接将a的值+1;
a++:先将a的值拷贝一份,然后对a进行+1操作,最后返回的是拷贝出来的值。
取余运算:取余运算符两边都是整数,结果正负由左边的数据来决定。
if语句
格式:
if (条件) {
} else if(条件) {
} else if(条件) {
} else {
}
特点:
*在同一时间,只有一个大括号的代码会被执行
*如果已经判断到某个elseif的条件了,说明前面的所有条件都不成立
使用建议:
*不要省略大括号
switch语句
格 式:
switch (数值)
{
case数值1:
break;
case数值2:
break;
default:
break;
}
特点:
*如果每一个case后面都有break,那么同一时间,只有一个case后面的语句被执行
*如果某一个case后面没有break,那么就会按顺序执行后面所有case的语句,直到遇到break为止
*如果要在case后面定义新的变量,必须加上大括号{}
if和 switch的异同
1> switch能实现的功能,if都能实现
2> if能实现的功能,switch不一定很方便的实现,比如 if (a>0)
3>if的灵活性和实用性更大
循环结构
1.while循环
格式:
while(条件)
{
循环体;
}
特点:
*如果条件一开始就不成立,循环体永远不会被执行
2.do while循环
格式:
do {
循环体;
} while(条件);
特点:
*不管条件一开始成不成立,都会先执行一次循环体
3.for循环
格式:
for (初始化语句;条件; 执行完一次循环体后的语句)
{
循环体;
}
特点(注意点):
*如果在循环体里面定义了新的变量,不能省略大括号,而且这个变量的作用域,仅限于这个大括号{}以内
*初始化语句只会执行一次
*初始化语句、条件、执行完一次循环体后的语句 都可以省略
4.三种循环结构的异同:
1>三种循环结构的作用基本相同,基本上可以互相转换。也就是一种需求,至少有3种实现方案
2> do while比较少用,while循环和for循环比较常用
3>性能相对最好的是for循环,因为它管理变量的作用域比较精细,for循环结束后就会释放变量。比如:
for (int i = 0; i<10; i++)
三、break和 continue
1.break
1>使用场合:switch语句、循环结构(while、do while、for)
2>作用:直接退出整个switch语句\循环结构
2.continue
1>使用场合:循环结构(while、do while、for)
2>作用:直接结束\跳过这一次循环体,进入下一次循环体
- c语言基础--编程基础
- C语言基础-基础语法
- C语言基础 上
- c语言基础
- C语言基础
- C语言基础
- C 语言基础
- c语言基础解析
- c语言 指针基础
- 3 C语言基础
- C语言基础
- C语言基础
- C语言基础
- C语言基础1
- C语言基础
- c语言基础
- c语言基础 2
- C语言程序基础
- 最小化到托盘并有图标闪烁效果
- Object-C 声明属性为什么用下划线,代码规范和编程风格
- 归并排序 java实现
- (转)在团队中进行单元测试/TDD的12条经验
- poj-3071
- C语言基础
- loadrunner 发送中文参数
- 修改Eclipse格式化代默认长度
- 1.Attach(E-UTRAN Initial)
- TCP/IP常见协议及实现
- 数据库分库分表
- MySQL与Oracle 差异比较之五存储过程&Function
- android json解析及简单例子
- 急性截瘫常见的病因