如果数据存在数组中,输出的时候想一个数据间隔一个空格,并且末尾的地方没有空格而是换行。
普通的写法有些啰嗦,例如:
for(int i=0;i<n;i++)
{
if(i!=0)
printf(" ");
printf("%d",a[i]);
if(i==n-1)
printf("\n");
}
假设数组是a[]
,n
是数组长度,这里提供一种较为极客的写法:
for(int i=0;i<n;i++)
printf("%d%c",a[i]," \n"[i==n-1]);
主要的思路是把要输出的内容两两一组,前面的输出看作数据 + 空格
;最后一组看作数据 + 换行
。
整体看就是数据 + 空格 + 数据 + 空格··· + 数据 + 换行
。
其中" \n"
代表了一个长度为2的字符串,第一个字符是空格,第二个字符是换行符。
当i取[0, n-2]时,i不等于n-1,判断不成立,为" \n"[0]
,也就是第一个字符----空格。
当i取n-1时,为" \n"[1]
,也就是第二个字符----换行。