C语言基础开奖开讲-(变量至运算符)

C语言基础

程序编译

  1. gcc xx.c会默认生成一个a.out的可执行文件,在a.out所在目录下执行,执行./a.out
  2. 程序编译可以用gcc XX.c -o XX ,注意不要命名成xx.c,这样会覆盖原先的xx.c文件内容。
  3. gcc xx.c -o xx -g -wall,-g -wall的意思是开启所有的语法警告。
  4. gcc只检查语法错误,不会检查逻辑错误。
  5. 每次修改完程序,都必须要执行一次gcc。

hello world程序

int main()
{
    return 0;
}
  1. 可执行程序一执行,就会去找一个叫做main的函数,然后运行main{}里的语句。
  2. 一个.c文件有且只能有一个main的函数。
  3. 一个函数碰到return就会结束,return后面的语句将永远不会被执行。
  4. 如果是main函数,他可以将前面的int省略,return也是可以省略的。
  5. main(int argc,char *argv[])
  6. include <stdio.h>是一个C语言标准输出输入库。

注释

  1. //代表单行注释,
  2. /* code */代表多行注释。
  3. /* 会与碰到的第一个//*/匹配
  4. //可以用来附加解释的作用,或用来注释代码
  5. 写清文件名,文件产权,文件制作方,如果是某人,要写清联系方式。

printf:打印函数

  • 打印""里面的语句
  • \n是转义字符代表换行
int main()
{
    int a=6;
    float b=9.8;
    printf("a=%d,b=%f",a,b);
}
  • %d:是占位符,输出整数
  • %c是占位符,输出字符
  • %f是占位符,输出浮点数
  • %lf是占位符,输出double类型的数据
  • printf("%m.nf");
    • m<n+1+小数点前的个数时,无意义

代码格式

main()
{
    
}
注意:每碰到一个{,就来个tab退格

常量

  1. 1,2,3,4:整形常量
  2. 'a','b','c':字符常量
  3. 1.2,2.3:浮点常量
  4. "hello world":字符串常量
  5. 0xfff321:地址常量
  6. 常量的特点:
    • 常量不会改变
    • 常量不能作为左值
    • 0,const(只读常量),define(宏常量)

变量

  1. 变量的特点
    • 可以改变的量
    • 可以作为左值,也可以作为右值
  2. 变量的定义
    • 在shell脚本里:变量名=值
    • 在C语言里十数据类型加变量名
    • 同时定义多个同类型变量:数据类型 变量a,变量b;
  3. 数据类型
    • 整形数据类型:int
    • 字符型数据类型:char
    • 浮点型:float(单精度),double双精度()
    • 数据类型的作用
      1. 标志着后面的变量具体是接受什么类型的值
      2. 这个变量再内存中占几个字节
      int:4
      char:1
      float:4//float是精确到
      double:8//double是精确到 
      
  4. 整形变量
    • int value=1;
    • int value;value=1;
  5. 字符变量
    • char ch='c'
    • char ch;ch='d'
  6. 浮点变量
    • float f1=1.2
    • float f2=1.4
  7. 变量的使用
    • int value;value=8;

标识符的规范

  1. 硬性规范:
    1. 不能用数字开头
    2. 不能与C语言关键字相同
    3. 只能由字母下划线和数字组成
  2. 建议规范
    1. 不能用拼音,多查字典
    2. 尽量使用驼峰命名法numOfStudent,num_of_student
    3. 见名知义

地址

  • 内存:字节:Byte式计算机存储的最小单位
  • 1M=1024KB;1KB=1024Byte;1Byte=8bit
  • 地址:地址是每一个字节所对应的编号
  • (中国===>家庭(屋子)===>门牌号)
  • (计算机===>字节===>地址)

进制

  1. 二进制:0~1
  2. 八进制:0~7
  3. 十进制:0~9
  4. 十六进制:
    • 0~15:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。
    • 0X开头

大端小端存储法

  • 小端法存储:低位上的数存储在低的地址所对应的字节里。hston
  • 大端法存储:低位上的数存储在高的地址所对应的字节里。hntos
  • 用处:用于网络传输内容的时候。

打印特殊字符

- 如何打印"":printf("\"abc\"\n");
- 如何打印'':printf("'abc'\n");
- 如何打印%:printf("%%");
- 如何打印\:printf("\\");

字符与ASCll码

  • 字符是一个特殊的整形,只占8位
  • 记住的字符
int main()
{
    char ch='a';
    printf("ch=%d\n",ch);
    //'2'+'2'=100='d'
}
'\0'=0
'0'=48
' '=32
'A'=65
'a'=97
  • 全球停用编码:unicode编码

scanf(scan formatter:格式化输入函数)

  • scanf("%d",&a);//&a:取a变量的地址
  • scanf后面必须是取某个变量的地址
  • 一个变量必须先定义出来再进行scanf
  • scanf("%d%d",&a,&b);
  • scanf后面不要加\n。

getchar()与putchar()

int main()
{
    char ch;
    ch=getchar();
    putchar(ch);
}
输入字符可以直接输出。

数据类型转换

  • 隐式转换:精度小的====>精度大的
    • char====>short int====>float====>double
  • 强制类型转换:(type)变量
int a=9;
int b=8;
float c=(float)a/b;//强制转换的是a的值,而不是a,所以a还是int类型。

运算符

  • 注意点:计算机只进行相同类型数据的运算,最后计算出来的结果也与他们的数据类型相同。
float a=9;
int b=8;
float c=a/b;
printf("c=%f",c);//结果为1.125000
分析:通过隐式转换,将b改为float类型,8.000000,然后计算结果。
  1. 算数运算符:+ - * / % ++
    • %后面必须是整数
    • ++
      • 前缀++
      int a=9;
      int b=++a;//a=a+1,b=a.
      
      • 后缀++
      int a=9;
      int b=a++;//b=aa=a+1.
      
      • 前缀--
      int a=9;
      int b=--a;//a=a-1,b=a.
      
      • 后缀--
      int a=9;
      int b=a--;//b=a,a=a+1.
      
  2. 位运算符
    • |:位或:有1为1
    • &:位与:有0为0
    • ^: 异或: 只要不同就为1
    • ~: 取反:先得补码再取反
    a=3;
    ~a=-4;
    3:0000 0011
    对补码取反:1111 1100(此时变为负数)
    反码为:1111 1011
    原码为:0000 0100
    
    a=-3;
    ~a=2;
    -3:1000 0011
    码反:1111 1100
    补码为:1111 1101
    取反:0000 0010
    原码:0000 0010
    
  3. 原码,反码,补码
    • 正数的原码和反码补码相同
    • 负数的反码在原码的基础上符号位不变,后面依次取反。负数的补码在反码基础上+1
    问题:1+(-1)会得到结果-2
    数据在内存中是以数据的补码存在
    数据是以补码存在,原码输出。
    
  4. 左移<<
a=3;
b=a<<2;//b=12
0000 0011
0000 1100
b=a>>2;//b=0
0000 0011
0000 0000
a=-3
b=a<<2;//b=-12
1000 0011
1111 1100
1111 1101
1111 0100
1111 0011
1000 1100
a=-3
b=a>>2;//b=-1
1000 0011
1111 1100
1111 1101
1111 1111
1111 1110
1000 0001
  1. ch的范围
    • -128~127
    char ch=127;可以正常输出
    char ch=128;输出为-128//1000 0000 默认为-128
    char ch=129;输出为-127.
    

小结:总的来说大部分知识都听过,但是在最下面讲的计算机都是以补码的形式计算,原码输出,二进制进行存储的。这一点以前虽然知道但没细究,所以这次计算过了一次~运算突然发现自己以前计算的方式有点错误,以前3取反我算到1111 1100时根本没想到会变成负数,所以多了一步负数转原码的过程。总的来说,还是学到了新的知识。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容