曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

C语言 常量 宏定义

整理自小甲鱼鱼C论坛

常量

在程序运行的过程中,它的值不能够被改变,成为常量

C语言中常见的常量如下:

  1. 整型常量:520,1314,123
  2. 实型常量:3.14,5.12,8.97
  3. 字符常量:
    1. 普通字符:’A’, ‘B’
    2. 转义字符:’\n’, ‘\t’
  4. 字符串常量:’ABCD’
  5. 符号常量:使用之前必须定义

定义符号常量

符号常量的定义格式:

#define 标识符 常量

#define是一条预处理命令(预处理命令都以”#”开头),也称为宏定义命令。#define的功能就是把程序中所有出现的标识符都替换为随后的常量。

代码示例,

#include <studio.h>

#define NAME "ABCD"
#define YEAR 2019

int main(void)
{
      printf("name is %s in year %d \n", NAME, YEAR)
      return 0;
}

标识符

在C语言中,标识符指的就是一切的名字。比附符号常量名是标识符,变量名也是一个标识符,即将学到的函数、数组、自定义类型的名字都称为标识符。并且满足变量的命名规律。

字符串常量

用一个特殊的转义字符来表示字符串的结束位置,这样当操作系统读取到这个转义字符的时候,就知道该字符串到此为止了,这个转义字符就是空字符:’\0’。表示字符串的结束位置(自动追加)。

问题:

(1) 转义字符占一个字节

(2) 有符号常量定义如下:

#define F(n) 2*n

则F(3+2) == 2*3+2 == 8,这是因为宏定义是在程序编译时先进行预处理,做法是直接将标识符替换为常量,并不会进行相关运算。因此,直接将F(3+2)替换为2*3+2。

(3) 定义两个宏,分别叫S(r)和C(r),通过它可以计算得到半径为r的圆的面积和周长。

程序如下,

#include <studio.h>

#define PI 3.14159
#define S(r) PI * r * r
#define C(r) 2 * PI * r

int main()
{
        int r = 5;
        printf("半径为%d的圆,面积是:%.2f,周长是:%.2f\n", r, S(r), C(r));
        return 0;
}
Last One

汇编语言 10.1 10.2 10.3 ret和retf call指令 依据位移进行转移的call指令

call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。10.1 ret和retfret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。 CPU执行ret指令时,进行下面两步操作: (IP)=((ss)*16+(sp)) (sp)=(sp)+2栈模拟图如下, 1 IP 2   ...…

汇编语言More
Next One

C语言 变量

整理自小甲鱼鱼C论坛变量变量和常量是程序处理的两种基本数据对象。通常会在内存中找一个位置来存放CPU要处理的数据,每个存放数据的位置都有一个“地址”,通过这个地址,CPU就可以找到并使用它们。这个存放的位置就是变量。变量名就是给一个数据的“地址“贴标签。变量命名的规则: C语言变量名只能由英文字母和数字或者下划线来组成,其他特殊字母不行。 变量名必须以英文字母或者下划线开头,不能以数字开头。 便令名区分大小写。 不能使用关键字来命名。一下对C语言的关键字进行整理: ...…

C语言More