C语言不常用小tip
2023-12-30 14:26:27
#include <stdio.h>
#define S(x) 3 < (x) < 5
int a, n;
void f1(int n)
{
for(; n >= 0; n--){
if(n % 2 != 0) continue;
printf("%d ", n); /*%d后面有1个空格*/
}
printf("\n");
}
double f2(double x, int n)
{
if(n == 1) return x;
else return x * f2(x, n-1);
}
int main(void)
{
int a = 9 ;
printf("%d,%d\n", a, S(a)); /* 中间没有空格 */
f1(4);
printf("%.1f\n", f2(2.0, 3));
printf("%d,%d\n", n, S(n)); /* 中间没有空格 */
return 0;
}
阅读该程序判断其输出:
9,1
4 2 0
8.0
0,1
注意点:
在C语言中,#define
?是用来定义宏的预处理指令。给定一个标识符和一个替换序列,#define
?指令会将标识符替换为指定的序列。
在您提供的示例中,S(x)
?是一个宏定义,它定义了一个名为?S
?的宏,其参数为?x
。替换序列是?3<(x)<5
。
这种宏定义实际上是一个逻辑表达式。它通过比较?(x)
?是否大于3且小于5,返回一个布尔值的结果。宏定义中的?(x)
并不是函数的调用,它仅是用来表示宏的参数。
需要注意的是 C 语言中的比较运算符?<(小于)
?和?>(大于)
?是左结合的,意味着它们从左到右进行比较。因此,表达式?3<9<5
?的比较顺序是?3<9
?首先得到结果?1
,然后和?5
?比较,即?1<5
,最终得到结果?1。
文章来源:https://blog.csdn.net/Xm041206/article/details/135304981
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!