C语言if后大括号的作用?
#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语言
if(表达式)
{
……
} //--------------------复合语句①
else
{
……
} //--------------------复合语句②
大括号的作用为把多个单一的语句括起来成为一个复合语句,这样,若表达式为非0(真),则执行复合语句①,若表达式为0(假),则执行复合语句②。
如有错误,请多原谅。
{
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)是否成立
不加括号表示成立后执行if后的下一条语句,只有一条,到“;”为止