进制转换与数据类型

创建文件

vim ***.c

inc+tab 自动补全头文件

main+tab 自动补全主函数(一般直接用)

注意事项

#include <>与#include “”的区别

#include <>:直接在库文件中查找文件

#include "" :在当前目录下查找头文件,如果找不到则在系统库文件中查找

*系统库文件在/usr/include/中

argc与argv分别代表什么含义?

argc:外部传参的个数

argv:储存外部传参的值

// :单行注释

/* */ :多行注释

#if 0

#endif:宏注释

#:表示预处理命令

#include:引入头文件

int:和return 0的值的类型保持一致

main:一个程序只能有一个main函数

gcc编译器

gcc:有GNU发行的用于c和c++的集成器

运行程序

  1. 直接运行

gcc ****.c 默认生成a.out文件

运行a.out文件:./a.out

  1. 生成可执行文件

gcc ****.c -o 可执行文件名

运行可执行文件:./可执行文件名

  1. gcc的分步编译:-ESc .iso

-E -S -c iso

预处理 编译 汇编 链接

1). 预处理:展开头文件,替换宏,删除注释。

gcc -E ***.c -o ***.i

2).编译:检查语法正确性,生成汇编文件

gcc -S ***.i -o ***.s

3 ).汇编:把汇编文件转换为二进制文件(目标文件)

gcc -c ***.s -o ***.o

4). 链接:把二进制链接转换为可执行文件

gcc ***.o -o 可执行文件名

./可执行文件名

*-o:命名生成文件

认识数据类型的关键字

查看取值范围:vim/usr/include/limits.h

整数

占位符

字节大小

取值范围

int--->signed int(有符号数)

%d %i

4

[-2^31—2^31-1]

unsigned int(无符号数)

%u

4

[0—2^32-1]

short--->signed short int(有符号短整型)

%d

2

[-2^15—2^15-1]

unsigned short int(无符号短整型)

%u

2

[0—2^16-1]

long--->signed long int(有符号长整型)

%ld

在64位中占8

在32位中占4

[-2^63—2^63-1]

unsigned long int(无符号长整型)

%lu

在64位中占8

在32位中占4

[0—2^64-1]

long long(无符号长整型)

%ld

8

[0—2^64-1]

unsigned long long(有符号长整型)

%lu

8

[-2^63—2^63-1]

小数/实数/浮点数

占位符号

字节大小

有效位

float(单精度浮点型)

%f

4

6——7

double(双精度浮点型)

%lf

8

15——16

字符

占位符

字节大小

取值范围

char--->signed char

%c %d

1

[-128——127]

unsigned char

%c %d %u

1

[0——255]

常量(宏)

常量:一旦定义值不可改变

宏的格式:#define 宏名 宏体——不加“;”

  1. 整数的常量:100——#define a 100
  2. 小数常量:3.14——#define b 3.14
  3. 字符常量:'a'——#define c 'a'

字符需要查看ascii表:man ASCII

-128-127--->0-127 共有128个字符

'A'--->65 大写转换小写+32

'a'--->97 小写转换大写-32

'0'--->48 '0'-48可把'0'转换为0

  1. 字符串常量:“hello world”——#define d "hello world"

*解析

  1. #define:固定,预处理命令
  2. 宏名:满足c语言命名规范(由数字,字母,下划线组成;不可以是关键字;不可以是数字开头;见名知意,区分大小写)

一般宏名大写:宏大写,变量小写,函数名驼峰/下划线

宏---MAX 变量---max 函数---Max

  1. 宏体:默认是字符串类型
  2. 宏:只替换不做计算,不做正确性检测
  3. 宏只发生在预处理阶段

变量

变量:储存数据的容器,值可以改变

格式:存储类型 数据类型说明符 变量名

*解析

  1. 存储类型:

auto:自动类型变量,局部变量的存储类型默认是auto

static:静态变量,延长局部变量的生命周期

extern:引用外部变量

register:寄存器变量,不可以取地址操作

const:修饰词,修饰的变量值不变

volatile:修饰词,防止内存优化,保持内存的可见性

  1. 数据类型说明符:int/float/char/double
  2. 变量名:满足c语言命名规范(由数字,字母,下划线组成;不可以是关键字;不可以是数字开头;见名知意,区分大小写)

定义变量

  1. 整数变量的初始化以及赋值

定义

int a;//定义一个整数

int a,b,c;//当类型一致时,可以定义多个变量

初始化

int a=100;//把100赋值给a

赋值

int a;

a=100;//把100赋值给a

整形变量的数据溢出

如果数据越界则重新回到最大值或最小值

int a=2,147,483,647

int b=2,147,483,648

补充占位符:

%5d——占五个位置(正数向右对齐,负数向左对齐)

%02d——日历格式;占用两个位置,多余位置使用0填充

  1. 浮点数变量初始化以及赋值

定义

float a;//定义一个小数

double a,b,c;//当类型一致时,可以定义多个变量

初始化

float a = 3.14;//把3.14赋值给a

变量的赋值

float a;

a= 3.14;//赋值

%f%lf默认输出小数点后6位

  1. 字符变量的初始化以及赋值

定义

char a;//定义一个字符

char a,b,c;//当类型一致时,可以定义多个变量

初始化

char a='a';//把'a'赋值给a

赋值

char a;

a='a';//把'a'赋值给a

字符变量的数据溢出

如果数据越界则重新回到最大值或最小值

练习

定义一个宏,表示一年由多少秒

 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #define N a=365*a;a=24*a;a=60*a;a=60*a
 int main(int argc, const char *argv[])
 {
     int a;
     scanf("%d",&a);
     printf("输入年数=%d\n",a);
     N;
     printf("由%d秒组成\n",a);
     return 0;
 }           

定义宏值为'h',请输出对应的大写

 #include <stdio.h>
  #include <string.h>
 #include <stdlib.h>
  #define N 'h'
  int main(int argc, const char *argv[])
  {
      printf("大写为%c\n",N-32);
     return 0;
  }   

定义宏值为’H‘,请输出对应的小写

#include <stdio.h>                            
#include <string.h>
#include <stdlib.h>
#define N 'H'
int main(int argc, const char *argv[])
{
    printf("小写为%c\n",N+32);
    return 0;
}   

定义宏值为'5',请输出对应的平方25

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
#define M N*N
int main(int argc, const char *argv[])
{   
    printf("平方为%d\n",M);
    return 0;
}        

定义简单宏,实现两个变量的值交换

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N c=a;a=b;b=c
int main(int argc, const char *argv[])             
{
    int a,b,c;
    scanf("%d%d",&a,&b);
    printf("输入a=%d,b=%d\n",a,b);
    N;
    printf("输出a=%d,b=%d\n",a,b);
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值