c语言基础知识
进制:
l 碾(nian)除法:十进制转为几进制则除几,从下往上看余数 (十进制转二进制,十进制转八进制,十进制转十六进制)
l 几进制转化为十进制:直接乘以几的次方数;
l binary:二进制;Octonary:八进制;Hexadecimal:十六进制;
原码,反码,补码:【数据存储形式】:(计算机存储的时候存的是补码)
l -1:原码:10000001
反码:11111110
补码:11111111
负数求补码时,符号位不参与运算
l 正数:原码反码补码相同;
l 负数:补码=原码取反加一,符号位不参与运算
l (当负数只有最高位为1时,如:1000 0000 则符号位也为数据位,当负数不止最高位为1,别的位上也有1时,符号位只为符号位, 不参与运算)
short a=-17;
-17: 原码:10000000 00010001
反码:11111111 11101110
补码:11111111 11101111 //0xffef;
l 计算机存储的数据,存的是补码形式,当输出时是将存的补码转化为原码读取输出的。
{
short a=-32768;
short b=a+1;
printf(“%d”,b);
将-32768转化为补码形式;将补码进行运算,再将结果转化为原码输出给b;
}
‘\0’与0的区别:
‘\0’: 是转义字符,也就是空字符,不能显示出来,在ASCII中对应的数值为0,
在定义char类型的时候,’\0’与0是一样的;如:char a=’\0’;char a=0;两者相同,占一个字节
当在分别定义的时候如:int i=0; char j=’\0’;这两者是不一样的,前面占4个字节,后面占1个字节
字符‘0’:代表的ASCII码中对应的数值是48;
程序:
l getchar();//请求终端获取一个字符,常用于让控制台停留,与system(“pause”);用法相同
l sizeof(a)//计算a在内存中所占字节数;
l 整型int在内存中占几个字节?正确答案:sizeof(int)个字节;
l 查看内存的方式:设置断点,运行断点,获取地址。点击调试-》窗口-》内存 查看内存后,再设置断点到下一行,f11逐行运行,看数据在内存中的变化。
l %:取余只能是整数取余,余数不能为0;a%b取余结果符号看a的符号;
l a/b;除数b不能为0;
位,字节,和字:
l 位:bit;
l 字节:byte; 1byte=8bit;
l 字:两个字节;
l Uint: 它对应于32位无符号整数(unsigned int)
l Static:定义静态变量或函数;修饰的变量数据并不会因为函数的退出而释放空间
l size_t:是用来定义无符号整型的;32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性,sizeof()操作符运行的结果就是size_t类型的
l Float的类型最多只能表示7位有效数值,默认保留6位小数;
l 浮点数允许的误差表达式:
abs(x-y)<1e5;
判断两个浮点数是否相等:
If(abs(x-y)<1e5)
浮点数用 %m.n 格式打印时遵循四舍五入原则
打印格式控制符:
l %hd(short整型);%d(整型);%p(打印地址);%u(无符号整型);%ho(以八进制格式打印short类型整数);%lo(以八进制格式打印long类型整数);%lu(打印unsigned long类型整数);%ld(打印long类型整数);
%llu(打印unsigned long long类型整数); %lld(打印long long类型整数);
l %m.n (m:字符总宽度(包括小数点);n:小数点后n位,截取会四舍五入;)
l %g:科学计数法和浮点表示法智能选择一个方法输出;
l %p:用于打印地址的格式控制符;printf(“%p”,&a);
l %0:自动补0;若空位在低位,则不补0,若空位在高位,则补0;(只有左对齐,并且有空位时才补0;右对齐不用补,不然就改变了原本的值)
转义字符:
l \v: vertical 垂直
l \r:将当前位子移到开头 printf(“11111\r22”);结果:22111
char 类型
l char 类型实际存储的是整数而不是字符,因为每个字符都对应一个ASCII码中相应的整数(ASCII码:用特定的整数表示特定的字符,如:Aà65; ASCII码取值范围:0—127)
l Char类型可以进行加减乘除的运算。
类型发生隐式转换情况:
1)赋值时;
2)不同数据类型参与运算时(低字节向高字节转换)(两个类型占字节数相同时long long转向double(小数精度高于整数));
3)传参数的时候;
4)赋值操作时,等号左边会转化为等号右边的类型(精度会缺失);
强制转换:int (x+y); (int)x; (int)(x); 强制转换不会自动四舍五入
优先级:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
If条件判断:
(1)无论多少条if….else….语句,都只算一个判断语句
(2)Switch(i)选择判断 case 里面可以包含多条语句;
(3)赋值表达式的值就是等号右边的值;
循环语句:
break;
continue; 跳过本次循环
return; 返回函数,函数执行结束
goto; 配合标号使用
时间种子:
void typing_speed()
{
int i,j;
srand(time(NULL));
//时间种子,如果不预先定义一个时间种子,当程序第二次执行typing_speed()函数时,rand()随机出来的数据和之前调用函数随机出来的数据一样;使用srand(time(NULL))之后,随机出的数据则不同了
char arr[100] = "dgshdgawsfj e;wloitrfbdjmhfjcdxagfasGWyhetwhfrdskajgfoiueraiwehfkdsh";
for (i = 0; i < strlen(arr); i++)
{
j =500 + rand() % 1000;
setTimeout(j);
printf("%c", arr[i]);
}
}
随机数:
rand()%(n-m+1)+m
其原理为,对于任意数, 0<=rand()%(n-m+1)<=n-m 于是 0+m<=rand()%(n-m+1)+m<=n-m+m 即 m<=rand()%(n-m+1)+m<=n
自增自减:
{
int a=3,b=2;
a=++a - --b; //结果为a=3,b=1; ++a在此次运算中,先实现了a+1的操作,a先等于了4,然后执行--b的操作,再运算a= ++a - --b的赋值操作
a=a++ - b--; //结果为a=2,b=1; a++在此次运算中,先实现了a的操作,然后执行--b的操作,再运算a= a++ - --b的赋值操作,再将a的值进行加1的操作
}
负号(-)与自减运算符的优先级是一样的,结合数据的方式是从右向左结合,比如:
b = -a-- - b++ - c++ - d++; //相当于b = -(a--) - b++ - c++ - d++;右向左结合
5++ ++(a++) ( x+y)++ //几种写法错误a++是一个表达式,不能自增(浮点数可以自增自减)
左移右移:
l 左移几位就是乘2的几次方;右移几位就是除2的几次方;
l {int a=10;a<<2;printf(%d,a);} 结果:1010<<2à101000->40;(int 四个字节;有32位,所以左边没有溢出,还有很多个位)
计算整型数组的长度:
sizeof(arr)/sizeof(int);
宏定义:
#define A(x) x*x
a=A(10); a=10*10=100;
b=A(5+5); b=5+5*5+5=35; 纯粹替换,不能加括号
c语言基础知识的更多相关文章
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- Golang 入门系列(三)Go语言基础知识汇总
前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- C语言基础知识-程序流程结构
C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...
- 重拾C语言基础知识
从实习到工作两年多的时间了,虽然感觉学到了很多知识,但是事实上却将立足之本的基础知识给忘了个精光.也许跟自己没有出去找工作有关,没有好好的将C语言的基础牢牢掌握. 从现在开始吧!好好的重温基础,做一名 ...
- ZYNQ笔记(0):C语言基础知识复习
ZYNQ的SDK是用C语言进行开发的,C语言可以说是当今理工类大学生的必备技能.我本科学C语言时就是对付考试而已,导致现在学ZYNQ是一脸懵逼.现在特开一帖,整理一下C语言的基础知识. 一.定义 1. ...
随机推荐
- SDL 2.0 如何在 windows 上使用?
https://wiki.libsdl.org/APIByCategory http://adolfans.github.io/sdltutorialcn/sdl-2-dot-0-tutorial-i ...
- UVa 11988破损的键盘
这题是很好的学习用数组实现链表的例子. 原题链接 UVa11988 题意 输入一段文本,字符'['表示Home键,']'表示End键.输出屏幕上面的结果. 思路 难点在于在字符串的头和尾插入字符,如果 ...
- foo的出现
在计算机程序设计与计算机技术的相关文档中,术语foobar是一个常见的无名氏化名,常被作为“伪变量”使用. 从技术上讲,“foobar”很可能在1960年代至1970年代初通过迪吉多的系统手册传播开来 ...
- Docker系列二:Docker的基本结构
Docker的基本结构 Docker 的三大基础组件 Docker有三个重要的概念:仓库 , 镜像 和 容器 ,它们是Docker的三大基出组件 Docker的组织结构 Docker处于操作系统和虚拟 ...
- caffe错误
一些caffe错误 训练时很快梯度爆炸,loss猛增至nan 如果找不到数据上的原因的话,可以怀疑caffe框架有问题,换用其它版本试试.比如我遇到的问题是在训练时使用了Accuracy层,而该层的实 ...
- 为什么使用正则test( )第一次是 true,第二次是false?
今天朋友问我一个问题,我现在需要多次匹配同一个内容,但是为什么我第一次匹配,直接是 true,而第二次匹配确实 false 呢? var s1 = "MRLP"; var s2 = ...
- 编译、裁剪、安装、删除 Ubuntu内核和模块管理
一.下载最新内核文件 地址:http://www.kernel.org,一般下载Full Source版本. 下载完毕后,放到任意文件夹中,使用命令: tar jxvf linux-x.x.x.tar ...
- 八爪鱼采集器︱加载更多、再显示20条图文教程(Xpatth、Ajax)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于代码布置采集器比较麻烦,又很早知道八爪鱼采 ...
- R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 上一篇(R语言实现︱局部敏感哈希算法(LSH) ...
- java程序调用xfire发布的webService服务(二)
在上一篇的调用xfire发布的webService服务中,我只是从服务端返回了一个字符串给客户端,却没有测试从客户端传递数据给服务端.而实际应用中一般是不太可能只出现这样的应用场景的,因此我便更进一步 ...