重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
呵呵,这个问题简单的回答是c语言规定了不能这样。c语言是计算机的一门语言,也有其特定的语法,就像英语那样,不合语法规定的我们就认为是错误的或不地道的或有歧义的。但计算机只有正确(1)与错误(0),没得选了。
网站的建设创新互联专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为楼梯护栏等企业提供专业服务。
至于为什么当初制定语法时这样规定了(好像是先有实践,后有理论的哦,呵呵),我认为可以从下面的几点看:
1。从c/c++编译器编译方式来看。编译器编译的方式是逐条往下编译的。要是一个函数中又定义一个函数,则编译器很容易搞混,分不清到底那一句是函数1的那一句是函数2的,就很有可能上面一句是函数1的,下一句就直接跳到函数2的,跳来跳去的,也只有人能认清,计算机没有像人那样的跳跃思维。所以,语法就这样规定了,这样就可以避免很多的混乱和错误。
2.从审美的角度来看。其实不用我多说,你一看到一个函数里又定义另一个函数时,你就觉得很乱了。尤其是当代码写得很长很长是,更弱爆了!
3.从使用,管理方便角度看。这样规定了,可以使编程模块化,就是不用等前面的写完,后面的才能写。它可以同时进行n个模块(模块可以简单的认为是一个或多个的函数),方便且提高效率啊。
函数调用的话 i++只会执行一次.
宏的话SQ(i++) 就会变成( (i++) * (i++)) , 结果当然不一样.
scanf("a,b,c的值分别为:%d,%d,%d",a,b,c);
既然这样写,那么程序输入时也应该在窗口中写上:
a,b,c的值分别为:3,1,2
或者把代码改成
scanf("%d,%d,%d",a,b,c);
问题一,x和y都是双精度型(double)数变量,用格式输入和输出时,要使用格式符%lf,否则会出错,得不到正确的结果。
你用的%d是整型(int)数的输出输入格式符。
所以你必须把他们统一起来,方法一是:把scanf和printf两个语句中的%d都换成%lf;方法二是:把前面定义语句double x,y;中的double换成int,语句变成:
int x,y;
采用上面两个方法都可以让程序正常运行。
问题二,scanf语句中双引号当中有“x=”,全部是:
scanf("x=%d",x);
或scanf("x=%lf",x);
这样的写法,要求在程序运行时,输入的内容要包含双引号内除格式符以外的所有字符,即你一定要输入:
x=2[回车]
系统才能读到x的值2。值得注意的是,x的大小写都必须跟程序中的大小写相同!
所以,你在程序运行时,直接输入:
2[回车]
系统并不会取得2,更不会把2赋值给x,所以,导致程序运行到后面,也不会得出正确的y的值(11)。
有鉴于此,也有两个办法让程序正确运行:
方法一,输入时按“x=2[回车]”;
方法二,由于按“x=”非常不方便,容易出错,建议把输入语句的x=去掉,改成:
scanf("%d",x);
或scanf("%lf",x);
就能按照你图片发来的输入方法操作,得到正确的结果了。
有什么问题请留言。