本文主要是介绍逗号表达式小试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//自增表达式作为函数参数时,求值顺序是从后往前:
//void f(int i, int j, int k)
//{
// printf("\n%d %d %d", i, j, k); //3,2,1
//}//void main()
//{
// int i = 1;
// f(i, i++, i++);
// printf("\n%d", i);
// printf("%d %d %d %d", i,i++, i++,i++);
// getchar();
//}
这里打印出来的结果是
而不是我想象中的3,3,3,3.
原因是因为自增表达式作为函数参数的时候,求值顺序是从后往前的。
void main()
{int a[10] = { 2,0,3,4 };int *p1 = &a[0], *p2 = &a[1];printf("%d %d", *p1, *p2); //2,0p1 = p1 + 1; //p1 = &a[1]*p2 = *p2 + 1; //a[1] += 1 a[1] = 1printf("\n%d %d", a[0], a[1]); //2,1printf("\n%d %d", *p1, *p2); //1,1printf("\n%d %d",(*p1++) * *p2++,(*p2)++);printf("\n%d", *p2);getchar();
}
就如同这个题在最后一步printf(“(p1++) *p2++,(*p2)++”);得到的结果是4和1,一开始想不通,于是我选择分别在前面打印(*p1++)和(*p2++),结果的到确是2和1,明显他们相乘的结果不可能等于4.
这篇关于逗号表达式小试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!