大一C语言学习笔记(1)---编译顺序问题;不同数据类型赋值,运算问题;算数运算符易错点(以解一元二次方程为例)
废话少说,上代码:
#include<stdio.h>
#include<math.h>
int main()//解一元二次方程
{
int a,b,c;
double tool,x1,x2;
printf("请以此输入一元二次方程的系数:a,b,c\n");
scanf("%d",&a);//编译是在主函数中是自上向下编译的,所以不要把赋值tool,x1,x2写在scanf函数之前
scanf("%d",&b);
scanf("%d",&c);
tool=b*b-4*a*c;
x1=(-b+sqrt(tool))/(2*a);
x2=(-b-sqrt(tool))/(2*a);
if(tool>0)
{
printf("方程有两个解:\nx1=%lf\nx2=%lf\n",x1,x2);
}
else if(tool==0)
{
printf("方程有一个解:x=%lf\n",x1);
}
else
{
printf("方程无解\n");
}
return 0;
}
分享一下敲这个代码时的思路和遇到的问题:
1.虽然感觉有些丢脸但我还是要说的,我居然因为少打一个()和一个*,用了足足2分钟才找到这两个错误......
x1=(-b+sqrt(tool))/(2*a); ----------就是这里 2*a 敲成了 2a ,”/“后的()没有加 !!!
2.不同数据类型运算问题:不同数据类型相互运算,两个数据会先自动转换为精度较大的数据类型,再进行运算(据说这是计算机为了数据更精准偷摸干的)
3.不同数据类型赋值问题:首先要知道赋值是将”=“右边的数据赋值给左边,如果右边数据类型精度较大,可能会导致数据丢失(不是一定);
反之如果左边的数据类型精度较大,则无需担心数据的丢失(因为人家装的下嘛 ~ ~ )
4.一开始我把对 tool,x1,x2 的赋值放在了 scanf 函数之前,但我发现结果总出问题!!!
仔细想想我靠,又是编译顺序的问题,编译器自上向下编译,当看到 :
tool=b*b-4*a*c; x1=(-b+sqrt(tool))/(2*a); x2=(-b-sqrt(tool))/(2*a);
编译器:”tool=b*.....,哎!?b是谁啊,我靠???“,好家伙这锅我背,变量 b 这时还没进行初始化就对变量 tool 赋值,代码跑起来自然是错误的结果...
孩子只是个大一的弟弟,如果文章有错误,请狠狠地批评我 (~ ̄(OO) ̄)ブ
大一C语言学习笔记(1)---编译顺序问题;不同数据类型赋值,运算问题;算数运算符易错点(以解一元二次方程为例)的更多相关文章
- 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项
博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...
- 大一C语言学习笔记(2)---快捷键篇
大家好,博主呢,是一位刚刚步入大一的软件工程专业的大学生,之所以写博客,是想要与同样刚刚接触程序员一行的朋友们一起讨论,进步,在这里记录我的一些学习笔记及心得,希望通过这些点点滴滴的努力,可以让我们离 ...
- 大一C语言学习笔记(9)---指针篇--从”内存的使用“和“流程控制”的角度来理解“指针变量的使用‘
#深入理解指针变量 举个错误栗子: //以下代码的目的是输出100和1000,但输出结果只有一个100 #include<stdio.h> #include<malloc.h> ...
- 大一C语言学习笔记(6)---自省篇--流程控制;break,continue,return间的异同;数组应用到循环语句中需要注意的问题;++i 和 i++的异同等。
下面是傻瓜博主"曾经"犯过的错和一些心得: ༼ つ ◕_◕ ༽つ 1.要想流程控制学好,一定要学会化繁为简,举栗子: 三目运算符 (略?略:略)---就是一个数字嘛, ...
- 大一C语言学习笔记(3)---对于程序员来说,学历和能力,到底哪个重要?
在高考失利后,我合理地萎靡一段时间,振作起来之后选择了我憧憬了10年的计算机专业---软件工程.但由于分数受限,也是选择了二本普通院校黑科技(我当然爱她,我的母校),而因为学历上的自卑,让我有了想考研 ...
- c语言学习笔记---预编译
专题三: 1) 预编译 处理所有的注释,以空格代替, 将所有的#define删除,并且展开所有的宏定义, 处理条件编译指令#if,#ifdef,#elif,#else,#endif 处理# ...
- 大一C语言学习笔记(10)---编程篇--制作简易计算器,支持加,减,乘,除,取余运算,要求 0 bug
博主自开学初就一直在努力为自己的未来寻找学习方向,学习编程嘛,尽量还是要抱大腿的,所以我就加入了我们学校的智能设备研究所,别的不说,那的学长们看起来是真的很靠谱,学长们的学习氛围也超级浓厚,所以我就打 ...
- 大一C语言学习笔记(8)---指针篇--动态内存是什么?与静态内存有什么区别?怎么使用动态内存,有什么需要注意的地方?
静态内存指的是在编译时系统自动给其分配的内存,运行结束后会自动释放:静态内存是在栈中分配的: 动态内存是我们程序员手动分配的内存,正常情况下,程序运行结束后,也不会自动释放,所以为了避免发生未知的错误 ...
- 大一C语言学习笔记(7)---指针篇--什么是指针?什么是指针变量?取地址符“&”的作用是什么?地址运算符“*”的作用是什么,怎么理解两者?
"指针是C语言的灵魂"这句话一开始我没怎么明白,现在接触了指针,终于知道为什么这么说了,因为....难,真难:下面说一下我对这句话的见解: C语言拥有着其他语言所没有的特性---直 ...
随机推荐
- Selenium自动化结合Mysql数据项目实战操作
前言 web自动化结合Mysql做一些实战操作,今天实战的场景是通过读取web页面字段名与数据库相应的表中的字段名进行对比 - 注:商城是自己搭建在本地,小伙伴需要源码请私聊 解决思路 第一步:获取w ...
- WPF进阶技巧和实战04-资源
资源集合 每个元素都有Resources属性,该属性存储了一个资源字典集合(它是ResourceDictionary类的实例).资源集合可以包含任意类型的对象,并根据字符串编写索引. 每个元素既可以访 ...
- 【C++ Primer Plus】编程练习答案——第5章
1 void ch5_1() { 2 using namespace std; 3 int small, big, sum{0}; 4 cout << "enter small ...
- 11.2.0.4 RAC manual opatch
1.Stop the CRS managed resources running from DB homes. If this is a GI Home environment, as the dat ...
- ApsNetCore打造一个“最安全”的api接口
Authentication,Authorization 如果公司交给你一个任务让你写一个api接口,那么我们应该如何设计这个api接口来保证这个接口是对外看起来"高大上",&qu ...
- C++核心编程 4 类和对象-对象的初始化和清理
构造函数和析构函数 对象的初始化和清理工作是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用结果是未知的,同样,使用完一个对象或变量,没有及时清理,也会造成一定的安全问题.C++利用了构 ...
- Promise.resolve(x)中x有几种情况
ps:下面参数说的是Promise.resolve(x)中的x 一共四种情况: 1.如果参数是Promise实例本身,则抛出错误 2.如果参数是一个promise对象,则then函数的执行取决于这个参 ...
- Scrum Meeting 0531
零.说明 日期:2021-5-31 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成后端管 ...
- UltraSoft - Alpha - Scrum Meeting 7
Date: Apr 22th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 完成课程中心的json格式传递 完成邮箱验证机制 刘zh 前端 ...
- Windows平台编译器相关的几个预定义宏
WIN32 是在windows.h 中定义的宏,包含winodws.h则定义该宏 _WIN32/_WIN64跟windows平台有关的宏,_WIN32在windows 32位和64位下都有该宏,_ ...