您的位置:首页 > 编程语言 > C语言/C++

C语言的printf函数以从右到左的顺序输出,每个数据项可以进行算术但各自互不影响

2012-08-23 22:23 736 查看
今天在一个网站上看到有个冒泡排序算法,最后的输出prinf输出函数如:
printf("%c",a[i],a[i]);

突然记得在什么地方看过一种说法,C语言的输出是从右到左的,但具体却很模糊,下班回来之后就试了一下,代码如下:

#include <stdio.h>

int main()
{
int b = 4;
printf("%d,%d",++b,b++);
printf("\n");
printf("%d",b);
printf("\n");

int a[3] = {1,2,3};
int i = 0;
printf("%d,%d",a[++i],a[++i]);
printf("\n");
printf("%d",i);
printf("\n");

return 0;
}

输出结果如下:



个人总结了下:

C语言的编译器以压栈式存储的,所以输出时是从栈顶往栈底读取数据的,但我们看到在用printf输出时,是从右往左进行的,而且每一项可以运算,但各项的运算结果互不影响,但对变量本身来说是每次计算都会改变它的值的。

冒泡算法中的交换数据的方法很经典,算法我也贴出来吧;

#include<stdio.h>
#define NUM 10
int main()
{
int a[NUM] = {35,32,43,55,66,123,33,44,65,76};
int i ,j;
for(i = 0; i < NUM; i++)
for(j = 0; j < NUM-1;j++)
if (a[j] > a[j+1])
{
a[j]^ = a[j+1];
a[j+1]^ = a[j];
a[j]^ = a[j+1];
}
for (i = 0; i < NUM; i++)
printf("%c",a[i],a[i]);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: