day 2

文章介绍了GCC编译的一步到位式和分布编译式过程,以及C语言的基本结构,包括头文件、程序入口和数据类型如int、float、char等。此外,还讨论了预处理中的宏定义及其注意事项,并涉及ASCII码和不同进制转换的示例。

一。今天学习

gcc 编译

       1)一步到位式:gcc xxx.c -o [yyy] (如果没写yyy ,就是默认 a.obj)

       2) 分布编译式:

              gcc -E xxx.c -o aaa.i (预编译)

              gcc -S aaa.i -o bbb.s (编译)

              gcc -c bbb.s -o kkk.o (汇编)

              gcc kkk.o -o yyy (链接)

C语言

       一。结构

       #include <xxx.h>  //标准头文件

       #include "yyy.h"  //非标准头文件

       int main(int argc, char *argv[])   //程序入口

       {

              .......                    //程序主体

       }

      

       二。预处理

       #include ... (头文件预处理)

       #define ...  (宏预处理)说明:宏预处理只是简单替代

        注:带参宏 类似 #defline NNN(a,b) a,b 也是替代

       三。数据类型

       int:整型  int 4字节 <%d>

                     long int 8字节(64位);4字节(32位)<%ld>

                     short int 2字节<%d>

                     long long int 8字节<%ld>

       float:浮点型   float 单精度 4字节 <%f>

                     double float 双精度     8字节 <%lf>

       char:字符型   char 1字节 <%c>  ...若记成%d 就成了ASCII码了

             

              常用的ascii码:

        \n (10) 空格(32) a(97) A(65) 0(48) 

二、作业

       1)导图(?还不太会画。大致就是上面所学今天)

       2)

3)宏定义注意事项

  a)宏定义 由于是简单替代,在引用时要注意其范围及引用出来的数据类型

  b)宏定义 用起来方便是事实,但也有安全隐患。比如宏定义叠加操作,值可能超出其原数据类型的最大值

4)

5) printf 是输出命令

  scanf 是输入命令(预习中)

6)0b01111100=0x7c=7*16+12=124

   93=5*16+13=0b01011101

   153=10*16-7=9*16+9=0x99

   0b10100001=0241

   0b10111000=0xb8

假设用户输入的 `N` 值为 8,以下是 `else if(N>1)` 部分的运行过程: #### 初始状态 ```c count = 1; day = 2; day1 = 1; day2 = 1; ``` 此时,已经经过了 2 天,当前兔子数量 `count` 为 1。 #### 第一次循环 - `count = day1 + day2`:`count = 1 + 1 = 2` - `day1 = day2`:`day1` 变为 1 - `day2 = count`:`day2` 变为 2 - `day++`:`day` 变为 3 此时,经过了 3 天,当前兔子数量 `count` 为 2。 #### 第二次循环 - `count = day1 + day2`:`count = 1 + 2 = 3` - `day1 = day2`:`day1` 变为 2 - `day2 = count`:`day2` 变为 3 - `day++`:`day` 变为 4 此时,经过了 4 天,当前兔子数量 `count` 为 3。 #### 第三次循环 - `count = day1 + day2`:`count = 2 + 3 = 5` - `day1 = day2`:`day1` 变为 3 - `day2 = count`:`day2` 变为 5 - `day++`:`day` 变为 5 此时,经过了 5 天,当前兔子数量 `count` 为 5。 #### 第四次循环 - `count = day1 + day2`:`count = 3 + 5 = 8` - `day1 = day2`:`day1` 变为 5 - `day2 = count`:`day2` 变为 8 - `day++`:`day` 变为 6 此时,经过了 6 天,当前兔子数量 `count` 为 8,满足 `count >= N` 的条件,循环结束。 最终输出的 `day` 值为 6,表示达到 8 只兔子需要 6 天。 ```c #include<stdio.h> int main() { int N = 8; int day = 0; int day1 = 1; int day2 = 1; int count; if (N == 1) { day = 1; } else if (N > 1) { count = 1; day = 2; while (count < N) { count = day1 + day2; day1 = day2; day2 = count; day++; } } printf("%d", day); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值