C语言的一些基本的操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文主要讨论一些C语言基本的操作符和一些小例题;

提示:以下是本篇文章正文内容,下面案例可供参考

一、注释?

对于一个优秀的程序员来说,添加必要的注释是必不可少的,这有利于后期代码的维护;也方便别人能够更加流畅的阅读你的代码;
而在C语言中呢,主要有两种注释风格:
1、

#include<stdio.h>
int main()
{
	/*printf("1、Hello world!\n");
	printf("2、Hello world!\n");
	printf("3、Hello world!\n");
	printf("4、Hello world!\n");
	printf("5、Hello world!\n");
	printf("6\Hello world!\n");*/

	return 0;
}

像这种注释风格,是C语言本身的,它采用
/*这里是需要被注释的内容 */
这种注释方式;
这种注释方式的优点呢,在于自由的注释掉一段代码块,能大量注释掉不想要的;
缺点就是“ / * ” 总是与 与之最近的 “ * / ”相匹配,不支持嵌套使用;
在这里插入图片描述
2、

#define  _CRT_SECURE_NO_WARNINGS 0
#include<stdio.h>
int main()
{
	//printf("1、Hello world!\n");
	//printf("2、Hello world!\n");	 
	//printf("3、Hello world!\n");
	//printf("4、Hello world!\n");
	//printf("5、Hello world!\n");
	//printf("6\Hello world!\n");
	return 0;
}

这种注释风格,并不是C语言自带的,而是来源于C++,
优点:可以自由的注释掉任意一条语句,可以注释多行也可以注释一行
缺点:如果需要被注释的行数太多,就只能一条一条注释,成本太高,这是就可以加一点/**/来帮助注释
3、

#define  _CRT_SECURE_NO_WARNINGS 0
#include<stdio.h>
int main()
{
#ifdef MAX //这里写#if 0也没问题
	printf("1、Hello world!\n");
	printf("2、Hello world!\n");	 
	printf("3、Hello world!\n");
	printf("4、Hello world!\n");
	printf("5、Hello world!\n");
	printf("6、Hello world!\n");
#endif
	return 0;
}

运行截图
在这里插入图片描述
这些操作都是在预处理阶段完成的,多余的代码以及所有的宏都不会参与编译,不仅保证了代码的正确性,还减小了编译后文件的体积。支持嵌套支持#elif
优点:条件编译允许只编译源文件中满足条件的程序 段,使生成的目标程序较短,从而减少了内存的开销,并提高程序的效率,可以按不同的 条件去编译不同的程序部分,因而产生不同的目标代码文件。
4、

#define  _CRT_SECURE_NO_WARNINGS 0
#include<stdio.h>
int main()
{
	if (0)
	{
		printf("1、Hello world!\n");
		printf("2、Hello world!\n");
		printf("3、Hello world!\n");
		printf("4、Hello world!\n");
		printf("5、Hello world!\n");
		printf("6、Hello world!\n");
	}
	return 0;
}

这种注释风格采用if语句来注释,不常用,而且预编译的时候是会编译进去的,使得代码变得冗长;
不推荐此注释风格;

总结:

博主,主要推荐1、2、3种注释风格,简单方便并且不会才遇到后面的预编译阶段;
它们在编译阶段被替换为了空格;
这也从侧面说明了,注释的本质就是替换为空格;

#/**/define/*               */MAX/*                  */10/**/

此段代码在预编译阶段会被替换为:# define MAX 10
每一个注释都会被替换为一个注释;

二、单引号和双引号

我们先来一段代码:

int main()
{
	char a = 'a';
	printf("%u\n", sizeof('a'));//
	printf("%u\n", sizeof("a"));//
	printf("%u\n",sizeof(a));//
	printf("%u\n", sizeof('abcd'));//
	printf("%u\n", sizeof("abcd"));//
	
	return 0;
}

大家可以算一算这个结果是多少

在这里插入图片描述
第一个:是‘a’也就是我们常说的字符常量,其实这种说法是不准确的,在C语言当中,它的全名叫做整型字符常量,既然都叫整型了,那不就很自然的,就会在内存中开辟4个字节的空间嘛;
第二个:“a”是一个字符串,字符串是一个个字符拼起来,那么自然的,有多上个字符,就占几个呗最后在算上\0的一个字节,就是这个字符串的总大小了;
第三个:刚才不是说了嘛,‘a’是整型字符常量,在内存是以4个字节,存储的,但是你只给我开辟了一个字节的空间,所以说在进行类似赋值的时候,往往都会发生截断现象,这才是对char a和‘a’大小不同的正确解释;
第四个:一看整型字符常量,先开4个字节空间,怎么存?按照顺序,把他们的阿斯克码拼接起来,再存进去;
第五个:类似于第二个;

总结:

单引号引起来的是整型字符常量(在C语言中是这样,因此单引号中最多放4个字符,在不同的环境下有不同的解释)
双引号引起来的是字符串;

方法。

&&、||、&、|、^、~操作符和一些例题

1、首先来介绍一下&&(逻辑与)
这是一个逻辑运算符,双面操作符,左右两边的操作数,可以是变量、常量、和表达式``````最终的运算结果为逻辑值,要么为1要么为0,(其中1表示真,0表示假)
在这里插入图片描述
两边同时为真才为真,
在这里插入图片描述
一假既全假,全假也是假
在这里插入图片描述
当从左往右,最先碰到假时就没必要执行后面的表达式了;
2、||(逻辑或)
双目操作符,优先级比&&低,左右两边操作数,可以为表达式、变量、常量
在这里插入图片描述
一真既真,全真也为真;
在这里插入图片描述
全假即为假;
3、&(按位与)
双目操作符,需要两个操作数,左右两边,可为变量、表达式、常量
运算规则:在等比特位下全1才为1;有0即为0;
在这里插入图片描述

4、|(按位或)
双目操作符,需要两个操作数,左右两边,可为变量、表达式、常量
运算规则:在等比特位下全0才为0;有1即为1;
在这里插入图片描述
5、^ (异或)

双目操作符,需要两个操作数,左右两边,可为变量、表达式、常量
运算规则:在同等比特下:相同为0,相异为1;
在这里插入图片描述
6、~ (按位取反)
单目操作符,只需一个操作数,可为变量、表达式、常量
运算规则所有比特位全部取反
在这里插入图片描述
ShowBits函数:显示一个数的二进制形式;

void ShowBits(int n)
{
	int num = sizeof(int) * 8 - 1;
	int count = 0;
	while (num >= 0)
	{
		if (n & (1 << num))
			printf("1");
		else
			printf("0");
		num--;
		count++;
		if ((count) && (count % 4==0))
		{
			printf(" ");
		}
	}
	printf("\n");
}

2个小练习
eg1、将一个整数的指定比特位改为1(从右往左为第一个比特位);
分析:既然想把特定位改掉其它位又想不变;是不是在特定位按位或上一个1就行了;
在这里插入图片描述
在这里插入图片描述
eg2、将一个整数的指定比特位改为0(从右往左为第一个比特位);
分析:在这里插入图片描述
在这里插入图片描述

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南猿北者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值