首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

逗号表达式引起的疑问:解决办法

2012-02-12 
逗号表达式引起的疑问:#includestdio.hvoidmain(){voidlist(int*a,intn)intscore[5]{60,80,90,70,50},

逗号表达式引起的疑问:
#include   <stdio.h>
void   main()
{
void   list(int   *   a,int   n);
int   score[5]={60,80,90,70,50},i,*p=score;

printf( "Score:\n ");
for(i=0;i <5;i++)
printf( "%d\t ",*(p+i));
printf( "\n ");

list(p,5);
for(i=0;i <5;i++)
printf( "%d\t ",*(p+i));
printf( "\n ");
}

void   list(int   *   a,int   n)
{
int   i,t;
for(i=0;i <n/2;i++)
t=a[i],a[i]=a[4-i],a[4-i]=t;
}

式中逗号表达式:t=a[i],a[i]=a[4-i],a[4-i]=t;若换为分号表达式:t=a[i];a[i]=a[4-i];a[4-i]=t;可以吗?为什么?

[解决办法]
不可以
t=a[i],a[i]=a[4-i],a[4-i]=t; 这是一句(功效相当于3句) 因为for后面无大括号,所以跟在for后面相当于
for(...){
t=a[i],a[i]=a[4-i],a[4-i]=t;
}

t=a[i];a[i]=a[4-i];a[4-i]=t;是3句,跟在无大括号的for后面相当于
for(...){
t=a[i];
}
a[i]=a[4-i];
a[4-i]=t;

热点排行