预处理标识符(两个int整数m和n的二进制表达中,有多少个位(bit)不同)

常用的预处理标识符有很多,以下是几个预定义标识符:

(1)__FILE__ :表示正在编译的文件

(2) __LINE__:表示的是正在编译的文件的行号

(3)__DATE__:表示的是正在编译的日期字符串

(4)__TIME__:表示的是正在编译的时间字符串

(5)__STDC__:当要求程序严格遵循ANSIC标准时该标识符被赋值为1。这个地方如果说编译器程序严格遵循ANSIC标准,会返回1,如果不遵守,则没有这个标识符。

代码如下:

#include <stdio.h> 
#include<windows.h>
int main()
{
	int m = 1999;//011111001111 
	int n = 2299;//100011111011 
	int c = m^n; //111100110100 
	int count = 0;
	while (c)
	{
		if (c % 2 == 1)
		{
			count++;
		}
		c = c / 2;
	}
	printf("这两个数中有%d个位(bit)不同\n", count);
	printf("FILE:%s\nLINE:%d\nDATE:%s\nTIME:%s\n", __FILE__, __LINE__, __DATE__, __TIME__);
	system("pause");
	return 0;
}



(6)#:使用预处理器将1个宏参数转换为1个字符串。(#VALUE 这种结构被处理器翻译为"VALUE"字符串)

代码如下:


#include<stdio.h>
#include<windows.h>
#define PRINT(FORMAT, VALUE)\
printf("the value of "#VALUE" is "FORMAT"\n", VALUE)
 int main()
 {
 	int num = 10;
 	PRINT("%d", num);
	system("pause");
 	return 0;
 }

程序结果:


(7)##:##结构则执行一种不同的任务。它把位于它两边的内容直接换成成1个字符。
代码如下:

#include<stdio.h>
#include<windows.h>
#define CAT(X,Y)  X##Y
int main()
{
	int num4 = 10;
	printf("%d\n", CAT(num, 4));
	system("pause");
 	return 0;
}

程序结果:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值