printf与cout怎么解释?

来源:百度知道 编辑:UC知道 时间:2024/06/25 21:46:06
以下都在VS2008下运行的结果:
程序一:
#include <iostream>
using namespace std;
//add()函数的定义,其有返回值
double add(double x,double y)
{
double z;
z=x+y;
cout < <x < <"+" < <y < <"=" < <z < <endl;
return(z);
}

int main()
{
double a=0.5,b=1.0;
cout < <"add(1.5,2.5)=" < <add(1.5,2.5) < <endl;
return 0;
}
问题一:
运行结果:
1.5+2.5=4
add(1.5,2.5)=4
为什么没有先输出add(1.5,2.5)=,然后再调用函数?
程序二:
#include <iostream>
using namespace std;

int main()
{
printf("%f",10/3);
return 0;
}
问题二:
输出结果:0.000000
为什么是这结果,10/3先转换为int,输出3.0也行啊?
程序三:
#include <iostream>
using namespace std;
int main()
{
int a = 10;
cout<<++a<<++a<<endl;
return

程序三:
#include <iostream>
using namespace std;
int main()
{
int a = 10;
cout<<++a<<++a<<endl;
return 0;
}
--------------------------
丑陋的代码
估计在不同版本的编译器中
结果都不会一样
效率上几乎没有提高
易读性几乎没有


程序运行至cout < <"add(1.5,2.5)=" < <add(1.5,2.5) < <endl; 时
首先运行函数以获得返回值
所以输出了 1.5+2.5=4


10/3 结果是int型的3
改成10.0/3就可以了

- -你又没在前边定义当然顺序执行了
去掉return 0,不愿意去就拿到主函数外边来

#include <iostream>
using namespace std;
int main()
{
int a = 10;
cout<<++a<<++a<<endl;
return 0;
}
我的执行结果是1211.
#include <iostream>
using namespace std;

int main()
{
printf("%f",10/3);
return 0;
}
执行错误,应改为10.0/3后结果3.333333