总结一下最近编程遇到的一些问题


问题描述

1.使用6.3版本DEVC++编码时候,保存源代码前需要对源代码进行编码,使用UTF-8或着其他编码产生的乱码问题

2.浮点型常量输入输出问题


原因分析:

乱码产生的原因就是编码和解码不一致导致

专业程序员不都是UTF-8编码吗?为何DEVC++用中文编码会乱码哪?

DEVC++在检测到中文时,会给你推荐使用UTF-8编码这时候你如果点是,你的编码变转换成了UTF-8;

DEVC++,的运行窗口解码默认以GBK格式解码,编码是UTF-8, 编码界面不一致不乱码才怪

用UTF-8编码程序,最后解码过程使用GBK格式解码

printf("我们是中国人\n")

输出结果:鎮ㄨ緭鍏ョ殑鏁颁负0


解决方案:

DEVC++,的运行窗口解码默认以GBK格式解码,那么我们用GKB格式进行编码不就完美解决中文乱码的情况,当然也可以使用ANSI编码,这个ANSI就比较神奇了想知道原因的可以打开下面的这个链接https://www.cnblogs.com/malecrab/p/5300486.html

这个是乱码原因图片分析 ,让你知道乱码出现的原因

用ANSI在编码适合出现中文一般回弹窗说是否转化为UTF-8编码,点否就行;

嫌弃一下下点太麻烦

方法二:如果还是乱码可以用GBK编码,   1.点击 工具------编译选项

                                                                     2.在编译器加入命令打勾

                                                                      3.填入下列命令     -fexec-charset=gbk

                                                                      4.重新编译

该方法可能导致中文报错,就是在调试的时候显示错误(一般只要源代码里面有中文就会报错),这样的话把这行命令删除重新编译一下即可;

程序员在开发中,肯定要与数据打交道,很多时候遇到乱码,或者通信时,或者读写数据时,一头雾水,根本原因就是因为没有搞明白字符集,可以看一下下面的B站讲解视频
https://www.bilibili.com/video/BV1xD4y1y7yc/?is_story_h5=false&p=1&share_from=ugc&share_medium=android&share_plat=android&share_session_id=9e0f1efc-aea1-4bba-a6e1-d6a40d46ab4d&share_source=WEIXIN&share_tag=s_i×tamp=1665397898&unique_k=bY5rCl9https://www.bilibili.com/video/BV1xD4y1y7yc/?is_story_h5=false&p=1&share_from=ugc&share_medium=android&share_plat=android&share_session_id=9e0f1efc-aea1-4bba-a6e1-d6a40d46ab4d&share_source=WEIXIN&share_tag=s_i×tamp=1665397898&unique_k=bY5rCl9

在浮点型类型中遇到的问题

double float 都是浮点型 double双精度 float单精度

#include<stdio.h>
int main()
{
	float xiaoshu;
	printf("请输入一个小数\n");
	scanf("%f",&xiaoshu);	
	printf("您输入的小数为%f\n",xiaoshu);
	return 0;		
}

输入一个1

输出1.000000

float没问题

那么double

#include<stdio.h>
int main()
{
	double xiaoshu;
	printf("请输入一个小数\n");
	scanf("%f",&xiaoshu);	
	printf("您输入的小数为%f\n",xiaoshu);
	return 0;		
}

输入1

输出0.000000

查了一下 原来double输入需要用%lf

#include<stdio.h>
int main()
{
	double xiaoshu;
	printf("请输入一个小数\n");
	scanf("%lf",&xiaoshu);	
	printf("您输入的小数为%f\n",xiaoshu);
	return 0;		
}

这样输出结果就ok了

专门查了一下

输入时:
float型输入用%f
double型输入用%lf

输出时最好是都用%f输出
在G++中,double类型若用%lf输出可能会错,
而在C++中,double类型用%lf输出是正确的

总结

scanf输入 double 用%lf    float 用%f 

printf输出 都用%f

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐