您现在的位置是:首页 >学无止境 >关于C语言的一些杂记2网站首页学无止境

关于C语言的一些杂记2

uxiang_blog 2024-06-04 00:00:03
简介关于C语言的一些杂记2


本文内容摘自C技能树一些优秀的博主

sizeof运算符内容

关于基本概念的问题

sizeof是C语言的关键字,它用来计算变量(或数据类型)当前系统中占用内存的字节数。
sizeof不是函数,而是运算符,之所以产生 ’ sizeof是函数 ‘ 这样的疑问是因为sizeof的书写确实有点像函数。

  1. sizeof在使用的时候看上去像是一个函数(因为其后面有一对小括号),但他却是一个运算符。他的使用方法有以下3种:
    a) sizeof(变量名)。
    b) sizeof 变量名。
    c) sizeof(数据类型名)。
    注意:只有sizeof后面是变量名时才可以去括号。那为什么是数据类型的时候不可以去掉括号呢?
    Alexxinlu 2021-12-06
    @Struggling_white sizeof是一个运算符,理论上来说是不需要括号的。
    但是不加括号在某些情况下会造成二义性,比如下面这个例子:
    sizeof int * + 1
    他指的是 (sizeof (int*)) + 1 还是 (sizeof(int)) * (+1) 呢?
    所以为了避免这种潜在的二义性,C语言规定如果一个数据类型名(例如:int)出现在一个表达式中就需要加上括号。sizeof(int)是对的,而sizeof int会报错。参考:Why sizeof int is wrong, while sizeof(int) is right?
  2. sizeof的返回值类型为size_t。

关于一些语句的理解和分号的注意

//size_t len = sizeof(str) / sizeof(char);的理解
#include <stdio.h>
 
int main(int argc, char** argv)
{
    char str[] = "Hello World!";
    size_t len = sizeof(str) / sizeof(char);
    size_t i;
    for (i = 0; i < len; ++i)
        printf("str[] is %c
",str[i]);
    return 0;
}

/*
sizeof(char)是一个字符的长度
sizeof(str)是上面个整个字符串的长度
所以size_t len 就是整个字符串的个数
*/

在这里插入图片描述

//关于分号的问题。
int i=0;
for(;i<10;i++);//此时分号就是空语句,但是多了这个分号,就可以把下面的printf语句踢出for循环
printf("%d",i);//输出结果为10且只输出一次
//运行结果  10
int i=0;
for(;i<10;i++)  
printf("%d",i);  //如果没有上面的分号,就会输出10个数字,分别为0123456789
//运行结果  0123456789
总结:要重视分号的影响,分号可以多,但是不能少(语法层面上),多了是个空语句,但可能作切割作用(功能层面上)。

字符的理解

#include <stdio.h>
int main(int argc, char **argv) {
	char ch;
	printf("请输入一个字符:");
	ch = getchar();/*getchar、putchar专门用于字符输入输出;
				     getchar()写法上要写为 变量 = getchar();
					 putchar()用法为putchar(变量);
					 putchar('
')输出一个控制符;
					 putchar('字母/字符');输出字母/字符;
					 */
	if(ch<=31)
	{
		printf("这是一个控制字符或通讯专用字符!
");
	}
}

//注解ch = getchar();和scanf("%d",&n)具有相同的效果,都会调用DOS命令窗口,等待用户键入信息,按下enter确认输入之后计算机才会接受到输入的信息,并进行后续的操作。但对前者来说是专门为字符输入设计的,而后者可以输入很多数据类型。
DOS是Disk Operation System(磁盘操作系统)的简称,是个人计算机上的一类操作系统。它直接操纵管理硬盘的文件,一般都是黑底白色文字的界面。说得简单些,DOS就是人与机器的一座桥梁,是罩在机器硬件外面的一层“外壳”,有了DOS,就不必去深入了解机器的硬件结构,也不必去死记硬背那些枯燥的机器指令。只需通过一些接近于自然语言的DOS命令,就可以轻松地完成绝大多数的日常操作。此外,DOS还能有效地管理各种软硬件资源,对它们进行合理的调度,所有的软件和硬件都在DOS的监控和管理之下,有条不紊地进行着自己的工作,但是在操作不慎情况下也会死机。

关于输出格式的扩展

C语言中输出格式 %m.nf 的意思

m:表示宽度
.n:表示精度

假设,
i=10.1;
printf("%5.2f",i);
输出结果为 10.10(m=5,其中空格占1位,小数(n)2)
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。