我的学习笔记-C语言篇

 1.数值数据

1.1 十进制

基数:10
  eg:
1234=1*10^3+2*10^2+3*10^+4*10^0;

1.2 二进制 

基数:2
取值: 0~1
 eg:
  00001010=0*2^0+1*2^1+1*2^3
二进制转换为十进制:加权
十进制转二进制:除2取余
 eg:
  10 --->1010

1.3 八进制 

基数:8
取值:0~7
前导: 以0开头
 eg:
023-->19  八进制转换为十进制:加权求和
八进制转化为二进制:
  (1)先转换为10进制再转为十进制
  (2)八进制的一个数用3位二进制代替(从低位往高位写,不足3位补0) 

1.4 十六进制 

 基数:16
取值:0~F
前导:0x
 eg:0xab
转换为10进制:加权求和
转换为二进制:(每一位16进制数由4位二进制数表示)低位往高位写,不足4位补0 

2.非数值数据 

1.ASCII码 

常用部分:128个 man ASCII查看ASCII码)
'\0'--->0
'\n'--->10
' '--->32 (space)
'0'--->48(字符0)
'A'--->65
'a'--->97
'F'+' '='f' 

3.词法符号 

3.1 关键字

c语言中有32个关键字
1.存储类型:auto static extern register  const volatile(修饰)
2.数据类型: void char short int long float double enum(枚举)
3.符号:sigend  unsigned
4.求字节长度:sizeof/整型数组也能使用。
5.宏定义:define
6.取别名:typedef
7.结构体 联合体:struct union
8.控制语句:if else switch case default do for while goto
9.辅助控制语句:break continue return 

3.2 标识符 

命名规则:字母、数字、下划线 只能以字母或下划线开头,且不能与关键字重复  

4. 运算符(算术/逻辑运算符) 

算术运算符:+ - * / %(取余)
逻辑运算符:
A&&B 都为真才为真
A||B 都为假才为假
 !  取反
 (与(且) 或 非)运算结果是一个逻辑值
短路法则:当表达式得到值的时候,可能就不会往后运行了
 eg:
   A&&B A的逻辑值为假,那么B的值就不关心了
   A||B A的逻辑值为真,那么B的值就不关心了
   ^--->异或:不同为1,相同为0  ^=  a^=b--->a和b的值交换--->a被赋予数值a与数值
b的差异值 

4.1 关系运算符 

> < >= <= == !=(判断是否不相等,不相等返回true 相等返回false)  

4.2 赋值运算符 

=  +=  -=  *=  /=  |=  &=  >>= <<=
a+=b  --> a=a+b; 

4.3 递增递减运算 

++  --
a++  -->  a=a+1
++a  -->  a=a+1
a--  -->  a=a-1
--a  -->  a=a-1
加加(减)在前,先加(减)后用。加加(减减)在后,先用后加(减)。

eg:
        a =10:
        printf("%d %d %d %d\n",a++,a++,++a,a);//结果:12 11 13 13
        printf从右往左执行,a值不确定,++a先加等语句执行完后再用,a++先用(11)后加,a++先用,(12)后加,此时以执行完 则++a的用可以用了为(13)此时 a=13 

4.4 地址运算符 

& --->取变量的地址  

4.5 逗号运算符 

(表达式1,表达式2,表达式3,...) 取最后一个表达式的值
 eg:
  int a=1,b=2;
  int c=(a+2,b+3);
  printf("%d\n"c);--->c=5 

4.6 三目运算符 

(表达式1?表达式2:表达式3)
  表达式1成立执行表达式2,不成立执行表达式3 

4.7 sizeof()运算符

求整型的所占字节数
 sizeof(int);---->4 

4.8 位运算 

位与:&
 2&3--->2 转换为二进制进行位与
位或:|
 2|3==3  转换为二进制进行位或
异或:^
 1^1 --->0
 0^0 --->1
 1^0 --->1
取反:~
左移:<<
右移:>> 

5.有符号和无符号 

有符号:数的最高位为符号位,0:正数  1:负数
正数在内存中是以原码存储的,负数是以补码存储的
原码:一个数的二进制
反码:原码取反(符号位不变)
补码:反码加一(符号位不变)
注意:在定义变量的时候没有说明有无符号,都默认为有符号 

有符号和无符号的数在运算的时候,都会转成无符号来运算;

eg:
         unsigned int a=10;
        signed int b=-20;
        if(a<b)

        {
                  printf("a<b\n");
        }

        else

        {
                  printf("a>b\n");
        }
        printf("%d\n",a+b);

6. 数据类型 

6.1.基本类型 

int (4个字节) short(2) char(1) float(单精度)(4) double(双精度)(8) long(8) longlong(8) enum(枚举) 

6.2.构造类型 

数组 结构体 共用体 

6.3.指针类型 

int * 、char** 

6.4.空类型 

void 用于描述空值,主要用于说明不返回值的函数或指向任一类型的指针等 

6.5.char 

char 值域:一个字节
有符号:-128~127  -0<-->-128
无符号:0~255 

6.6. 逻辑类型 

#include <stdboo1.h>
boo1 var =true 

7.常量 

1.整型常量
  23 023 0x23
2.字符常量:由单个字符组成,单引号引起来
  'A' '0' '\n'
3.字符串常量:
  由多个字符组成,用双引号引起来
  有一个结尾的标志'\0'
  "hello"  "A"
4.浮点常量
  12.234
5.指数常量
  1.2234*10^1-->1.2234e+1
  1.2234*10^-1-->1.2234e-1
6.标识常量
#define N 100 ---> 表示N被100替代 

8.变量 

1.定义变量的目的:系统为其分配空间,可以保存数据;
2.变量的一般形式:
  <存储类型> <数据类型> <变量名>;
 (1)存储类型:
  autu:自动存储(一般默认为自动存储,可以省略)
  extern:外部存储,一般用作变量的说明(外部引用)
 * static:静态存储
  作用:1.修饰局部变量,延长生命周期(放在静态数据区)
     2.修饰一个未被初始化的局部变量值为0
     3.修饰全局变量,函数限制作用域(只能被本文件使用)
  register:寄存器存储(运行速率很高,数量少)
  const 修饰的变量只能使用(只读)不能修改
 (2)数据类型:
  一般根据要存储的数据来确定类型
 (3)变量名:遵循标识符的命名规则一般见名知意
  初始化:给变量一个初值 

 

9.强制类型转换 

将某个类型的数据转换为指定的类型
两种方式:

1.显式的数据类型转换
(数据类型名称)<表达式>

eg:

        int main()
        {
                  int var=100;
                  float a=(float)var;
                  printf("%f\n",a);
                  return 0;
        }

2.隐式转换

eg:

        int main()
        {
                  int var=100;
                  float a=var;
        } 

10.输入输出语句 

 1.格式输入:scanf()
 格式输出:printf();
2.字符的输入:getchar()
 字符的输出:putchar();
3.字符串的输入:gets()
 字符串的输出:puts();

10.1 格式输入,输出 

 scanf()格式输入
函数原型:
  #include<stdio.h>
  int scanf(const char*format,...);
{
  功能:从终端上以某种格式输入;
  参数:
    format:格式符
   ... 地址表;(如果有多个用逗号隔开)
    返回值:成功返回世纪输入的个数,失败返回-1 (ctrl+d)--->结束输入
}
修饰符:'*':跳过第一个赋值
  scanf("%*d%d",&var);

 

 

格式输出:printf()
函数原型:int printf(const char *format,...);
参数:
  格式控制串   输出表
  格式符与scanf大致相同 多:%e指数的输出  %g:e和f输出简短的一种 %p:打印地址 

 

10.2 垃圾字符的处理 

1.加抑制符(第二次赋值不要)
int ret=scanf("%c%*c%c",&ch1,&ch2);
2.加空格
int ret=scanf("%c %c",&ch1,&ch2);
3.getchar()
  scanf("%c",&ch1);
  getchar();
  scanf("%c",&ch2); 

10.3 字符的输入输出 

1.getchar() 字符的输入
  头文件:
  #include<stdio.h>
  函数原型:
  int getchar(void);
{
  功能:从终端上输入一个字符;
  返回值:返回获取到的字符;
}
2.putchar()字符的输出
  头文件:
  #include<stdio.h>
  函数原型:
  int putchar(int var);
{
  功能:把一个字符输出到终端;
  参数:var:要输出的字符

10.3 字符串的输入和输出 

1.puts();  自带换行功能
  头文件:
  #include<stdio.h>
  函数原型:
  int puts(const char *s);
功能:输出一个字符串到终端;
参数:s:指向一个串的首地址;
返回值:输出的字符个数+一个'\0'(结束符号)
2.gets():字符串的输入
  头文件:
  #incldue<stdio.h>
  函数原型:
  char *gets(char *s);
参数:s:指向一片空间的首地址,用来保存输入的字符串;
返回值:返回s;
注意:在输入字符串的时候保证s指向的空间足够大,gets得到的字符串总会在末尾加上'\0'
eg: math.c 
输入a,b,c的值,求一个一元二次方程ax^2+bx+c的根;
一元二次方程的函数:(-b+sqrt(b*b-4*a*c))/2*a  sqrt(开方函数)  

#include<math.h>需要连接库
编译时:gcc test.c -lm

 未完待续.......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值