TA的每日心情 | 汗 2024-10-15 10:05 |
---|
签到天数: 372 天 [LV.9]以坛为家II
|
1、函数实现加法运算- /*
- 1、定义一个加法函数,实现返回两个整数的和;
- 2、调用该函数实现加法;
- */
- #include <stdio.h>
- int sum(int , int); // 函数声明;
- int main() {
-
- int result = sum(5, 4); // 调用函数,将返回结果赋值给result ;
-
- printf("result = %d\n", result); // 打印结果;
-
- system("pause");
-
- return 0;
-
- }
- int sum(int v1, int v2) { // sum函数体;
-
- return (v1 + v2); // 返回两整数之后;
-
- }
复制代码 2、预处理宏实现加法运算- /*
- 1、宏是一种预处理指令,在编译时自动翻译成对应的值,但不执行任何计算;
- 2、宏的定义:defind 标识符 替代符
- 3、宏定义是一种文本运算,所以要特别注意替换后的结果,为保证准确性,在每个参数中都加"()";
- 4、如:sum(v1,v2) v1+v2 在代码中如果是sum(1,2)*sum(2,3) 结果会翻译成1+2*2+3,造成结果失真;
- */
- #define sum(v1, v2) ((v1)+(v2)) // 定义一个宏 ,注意后面不要带";",否则";"会一同被翻译过去
- #include <stdio.h>
- int main() {
-
- int s1 = sum(5, 4); // 编译时预处理为int s1 = (5)+(4);
-
- int s2 = sum(1, 2) * sum(2, 3); // 编译预处理翻译为int s2 = ((1)+(2)) * ((2)+(3)) 如果外面不加"()"则是(1)+(2)*(2)+(3)
-
- int s3 = sum(4/4, 2/2); // 编译预处理翻译为int s3 = ((4/4) + (2/2)) 如果里面不加"()"则是(4/4+2/2),无法保证准确性;
-
- printf("s1=%d, s2=%d, s3=%d\n", s1, s2, s3); // 打印结果;
-
- #define COUNT 5 // 定义一个不带参数的宏 ,一般全大写
-
- printf("COUNT = %d\n", COUNT);
-
- #undef COUNT // 标识预处理结束,宏定义也是有作用域的,后面再用COUNT编译时会报错
-
- system("pause");
-
- return 0;
-
- }
复制代码 宏在编译时直接翻译成相对应的值,从某种程序上来说比函数效率要高,因为这种方式只在编译时消耗硬件资源,运行时已经不再执行;
|
|