Day2练习

一、写第一个C语言程序,并分步编译

#include <stdio.h>
int main(int argc,const char *argv[])
{
printf("Hello world!\n");
return 0;
}
gcc -E hello.c -o hello.i  //预处理
gcc -S hello.i -o hello.s  //编译
gcc -c hello.s -o hello.o  //汇编
gcc hello.o -o hello       //链接

二、宏定义的注意事项

1.在程序中,所有遇到宏名的位置都被替换成宏体
2.宏定义只是简单的替换
3.作为字符串输出需有" "
4.#可把带参宏的参数转成字符串
5.存在宏体与参数无关情况
6.宏定义后无;
7.带参宏,宏名与参数的括号之间不能加空格
8.宏定义替换时,不检查语法错误
9.宏名一般大小,带参宏的参数不需要大写
10.宏定义一般放在主函数上方,头文件下方

三、宏定义的练习

1.有如下宏定义
#define N 10
#define M N+2
#define NUM M*N+M/4
求NUM的结果

NUM = 10 +2*10 +10 +2/4 = 40

2、有如下宏定义
#define M 10
#define N M+7
#define NUM M+N*N/M+7

NUM = 10+10+7*10 +7/10 +7 = 97
3、使用带参宏实现,两数相加和两数相减
#include <stdio.h>
#define ADD(a,b) a+b //带参宏实现两数想加
#define SUB(a,b) a-b //带参宏实现两数相减
int main(int argc, const char *argv[])
{
//带参宏仍然是宏名替换宏体的过程
printf("%d\n",ADD(2,3));
printf("%d\n",SUB(3,4));
return 0;
}

5 
-1

四、变量和scanf相关内容

1.变量

(1)格式:存储类型 数据类型 变量名;
(2)13个基本数据类型:int double float char long short enum typedef union struct signed unsigned void;
(3)要求:变量名是一个标识符,由字母、数字和下划线构成,不能以数字开头,严格区分大小写,不能与关键字同名;
(4)存储类型:
auto 自动类型(默认),局部变量默认是自动类型,全局变量是非自动类型
static 静态存储类型
register 寄存器类型
extern 从其他文件中找
volatile 从内存中找
const 常量

(5)显式的强制类型转换:
格式:(强转之后的类型)变量名;
小的数据类型向大的数据类型强转是安全的,大的数据类型向小的数据类型强转是不安全的;

(6)原码、反码和补码:
正数 原反补是一样的,
负数 最高位为1,反码是原码除符号位之外其他位取反,补码是反码+1。

2.scanf

scanf(“占位符”,占位符对应的数据类型的变量的地址);
sacnf,一次只能识别到空格,tab键和\n之前,是严格控制格式的函数,双引号内的格式是什么,输入的格式就是什么。

char a,b,c,d;
scanf("%c,%c,%c,%c",&a,&b,&c,&d); 
printf("%c\t%c\t%c\t%c\t",a,b,c,d);

scanf吸收垃圾字符的三种方式

//第一种方式,用getchar吸收
scanf("%c",&a);
getchar();
//第二种方法,在%c前面家空格。
scanf(" %c",&a);
putchar(a);
//第三种办法,利用scanf严格控制格式的特点。
scanf("%c ",&a);

五、进制转换

0111 1100转十进制124
93转二进制0101 1101
153转十六进制0x99
1010 0001转八进制241
1011 1000转十六进制0xb8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值