C语言if后大括号的作用?

刚开始学C额。。看教程自己写了个解一元二次方程的代码。代码如下
#include <stdio.h>
#include <math.h>

int main(void)
{
int a = 1;
int b = 5;
int c = 6;
double deta;
double x1;
double x2;
deta = b * b - 4 * a * c ;
if ( deta < 0 )

printf ("无解");

else if ( deta == 0)
{
x1 = ( -b ) / 2 * a;
printf ("计算的结果为:x1=x2=%f " ,x1);
}
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);
}
return 0;
}
①后面的判断语句,现在加着大括号执行结果正确
计算的结果为x1=-2.000000 x2=-3.000000 Press any key to continue

但是去了大括号以后,执行结果变成这样了
解a=1 b=5 c=6这个方程结果还是对的
但是如果解一个无解的方程,比如a=1 b=2 c=3
会出现这样的结果
无解计算的结果为x1=-925596313493178310000000000000000000000000000000000000000000
0.000000 x2=-1.#IND00 Press any key to continue

为啥?

程序哪里有写的不规范的,还望高手指点一下啊!谢谢

书写是正确的。加大括号表示这是一段整体的语句块,当满足else条件后,语句块里面语句按顺序执行;如果不加大括号,则只会执行else后面的第一句。

然后if语句结束,后面2句已经不属于if语句中了,这样不管deta等于什么,x2 = ( -b - sqrt (deta) ) / 2 * a;和printf ("计算的结果为x1=%f x2=%f " , x1 , x2);都会执行。

扩展资料:

ANSI C提供了标准C语言库函数。

C语言初学者比较喜欢的Turbo C 2.0提供了400多个运行时函数,每个函数都完成特定的功能,用户可随意调用。这些函数总体分成输入输出函数、数学函数、字符串和内存函数、与BIOS和DOS有关的函数、 字符屏幕和图形功能函数、过程控制函数、目录函数等。

Windows系统所提供的Windows SDK中包含了数千个跟Windows应用程序开发相关的函数。其他操作系统,如Linux,也同样提供了大量的函数让应用程序开发人员调用。

作为程序员应尽量熟悉目标平台库函数其功能。这样才能游刃有余地开发特定平台的应用程序。比如作为Windows应用程序的开发者,应尽量熟悉Windows SDK;作为Linux应用程序开发者,应尽量熟悉Linux系统调用和POSIX函数规范。 

参考资料来源:百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
请看范例:
if(表达式)
{
……
} //--------------------复合语句①
else
{
……
} //--------------------复合语句②
大括号的作用为把多个单一的语句括起来成为一个复合语句,这样,若表达式为非0(真),则执行复合语句①,若表达式为0(假),则执行复合语句②。
如有错误,请多原谅。
第2个回答  2014-07-26
书写是正确的。加大括号表示这是一段整体的语句块,当满足else条件后,语句块里面语句按顺序执行;如果不加大括号,则只会执行else后面的第一句,然后if语句结束,后面2句已经不属于if语句中了,这样不管deta等于什么,x2 = ( -b - sqrt (deta) ) / 2 * a;和printf ("计算的结果为x1=%f x2=%f " , x1 , x2);都会执行。本回答被提问者采纳
第3个回答  2014-07-26
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);
}
没有大括号,相当于这样的:
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
}
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);

最后两条代码怎么都会执行,不管( deta == 0)是否成立
第4个回答  2014-07-26
if后加括号表示if条件成立后,执行括号内所有的
不加括号表示成立后执行if后的下一条语句,只有一条,到“;”为止

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网