【C语言】一些初学易犯的小错集合

本文总结了C语言初学者常遇到的小错误,如main()拼写错误,scanf()使用不当等,并详细解释了正确的使用方法。同时,介绍了C语言中的数据类型及其格式化输出,包括字符、整型、浮点型等,并展示了sizeof()函数用于获取数据类型字节大小的示例。此外,还探讨了不同类型在不同平台上的字节大小差异。
摘要由CSDN通过智能技术生成

【C语言】一些初学易犯的小错集合

刚学c的时候,照着书里和网上扒下来的程序写都能运出一堆errors,
按F4找错,找一节课看不出来错哪。
记录一下曾犯过一些憨憨的小错误:

1.main()->mian()

把main()函数打成mian()

(不知道到底是我舍友太爱吃面会犯这个错还是大家都会手滑
当然不止是main函数,还有其他的函数也会有手误的时候,
有时候找不到错可以看看单词有没有拼错

2.scanf()的正确输入方式

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘)读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

有没有在用scanf()输入的时候发现输完数字按回车不会进行下一步,亦或者算出来结果是错误的。
那是因为输入方式错了(记得把输入法切英文
上代码:

#include <stdio.h>
int main()
{
	int a,b;
	printf("请输入两个整数:\n");
	scanf("%d%d", &a, &b);
	printf("%d,%d\n",a,b);
	return 0;
}

来看看三种输入方式会产生的结果:
①输入:4□5↙
在这里插入图片描述

②输入:4↙5↙
在这里插入图片描述

③输入:4,5↙
在这里插入图片描述

呜呼结果出错啦!
其实"%d%d"是按十进值格式输入两个数值。
输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔
那什么时候可以用","呢?
这种时候:

#include <stdio.h>
int main()
{
	int a,b;
	printf("请输入两个整数:\n");
	scanf("%d,%d", &a, &b);
	printf("%d,%d\n",a,b);
	return 0;
}

看看结果:
在这里插入图片描述
其实4,□5↙或者4,□□□5,↙都合法,但是 ","一定要跟在数字后面
真要仔细学习这个函数建议搜详细资料,有许许多多的“坑”,这里写一点遇到过的:

1、sacnf()中的变量必须使用地址。
scanf("%d%d",a,b); //错误
scanf("%d%d",&a,&b);//正确
2、scanf()的格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符。
scanf(“a=%d,b=%d”,&a,&b); //输入: a=4,b=5↙

3、在用"%c"输入字符时,空格和“转义字符”都会被输入。 scanf("%c%c%c",&c1,&c2,&c3); //输入:a□b□c↙
结果:a赋给c1,□赋给c2,b赋给c3 (其余被丢弃)

许许多多多多的数据类型

刚学C的时候确实记不住那么多数据类型,以及它们的格式化输出分别是什么,有时候就会用混、用错。多用用就熟悉了,解决方法就四个大字:
多敲代码!
还是要有疑惑的,比如:

  • 为什么有这么多的类型?
  • 每种类型的大小是多少?

存在这么多的类型其实是为了更加丰富的表达生活中的各种值。

数据类型--------------------------------------------------------------对应的格式化输出
char //字符数据类型 ---------------------------------------------------%c
short // 短整型-----------------------------------------------------------%d
int // 整型------------------------------------------------------------------%d
long // 长整型-------------------------------------------------------------%ld
long long // 更长的整型-------------------------------------------------%lld
float // 单精度浮点数(保留小数点后六位--------------------------%f
double //双精度浮点数---------------------------------------------------%lf
//ps:%s是字符串的格式化输出,但字符串不是数据类型

那类型的大小是多少呢?(此时的“大小”——>“字节”)
字节是什么?
先引入三个词:

字 word
字节 byte
位 bit

1字节=8位(1 byte = 8bit)
1字=2字节(1 word = 2 byte)
字长是指字的长度
一个字节的字长是8
一个字的字长为16

天哪我快要不认识“字”这个字了
再来点计算机小知识:

bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。
Bps 即是Byte per second 的简称。而电脑一般都以Bps 显示速度,如1Mbps 大约等同 128 KBps。
bit 是电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
Byte 一个Byte由8 bits所组成,可代表一个字元、或符号,是记忆体储存资料的基本单位,每个中文字要两Bytes。当记忆体容量过大时,位元组这个单位就不够用,因此就有千位元组的单位KB出现。

最重要的转换来了:

1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB

普及完知识再来看看“每种类型的大小是多少?”

#include <stdio.h>
int main()
{
	printf("%d\n",sizeof(char));//1
	printf("%d\n",sizeof(short));//2
	printf("%d\n",sizeof(int));//4
	printf("%d\n",sizeof(long));//4
	printf("%d\n",sizeof(long long));//8
	printf("%d\n",sizeof(float));//4
	printf("%d\n",sizeof(double));//8
	return 0;
}

ps:sizeof()是求字节大小的函数,此时的输出就是每种类型的大小。
pps:无论在Windows32位还是64位平台下它们的大小不会改变,
但是!在16位下 int 为2个字节,在Linux中64位下 long 为8个字节。

END

本来想写几个错误小点结果又啰嗦了一堆。
但是!
知识还是知道的越多越好不是吗?

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值