以下for循环的功能如何不同 #包括 void main() { INTA、b、c; 对于(b=c=10;a=“-FIGURE?,UMKC,XYZHello,TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}Tnalvlblofakhfoufetphcsthaugceaelclclcl^r^r\\tzvyxyt | S~Pn SPm SOn ULo0ULo#ULo WHq!WFs XDt!”[b++21]) { 对于(;a-->64;) { putchar((++c=='Z')?(c=c/9):(33^b&1)); } } getch(); }
上面的c语言程序以印度地图的形式输出。在上面的程序中,外部for循环有2个插槽,第三个插槽为空。然而,我理解程序是如何工作的,但问题是外部for循环的条件槽是否作为分配槽工作。从语法和逻辑上来说,这应该是错误的,但它是有效的。根据数组索引中的值,将相应的以下for循环的功能如何不同 #包括 void main() { INTA、b、c; 对于(b=c=10;a=“-FIGURE?,UMKC,XYZHello,TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}Tnalvlblofakhfoufetphcsthaugceaelclclcl^r^r\\tzvyxyt | S~Pn SPm SOn ULo0ULo#ULo WHq!WFs XDt!”[b++21]) { 对于(;a-->64;) { putchar((++c=='Z')?(c=c/9):(33^b&1)); } } getch(); },c,C,上面的c语言程序以印度地图的形式输出。在上面的程序中,外部for循环有2个插槽,第三个插槽为空。然而,我理解程序是如何工作的,但问题是外部for循环的条件槽是否作为分配槽工作。从语法和逻辑上来说,这应该是错误的,但它是有效的。根据数组索引中的值,将相应的char的ASCII码赋值为变量a 如何工作?外部for循环的条件槽分配给a字符串文本的一个字符,同时递增b。因为赋值运算符也返回赋值,所以外部for循环的条件成为字符串文字的某些字符的值。由于字符串是用C分隔的'\0',因此在表达式b+++21
char
的ASCII码赋值为变量a
如何工作?外部for循环的条件槽分配给
a
字符串文本的一个字符,同时递增b
。因为赋值运算符也返回赋值,所以外部for循环的条件成为字符串文字的某些字符的值。由于字符串是用C分隔的'\0'
,因此在表达式b+++21
到达字符串末尾之前,条件一直为真(然后返回字符串的最后一个(额外)字符,它等于0
,因此计算结果为false
)
事实上,这是一个用于迭代字符串的常见C习惯用法的模糊且更复杂的版本,如下所示:
#include<stdio.h>
void main()
{
int a,b,c;
for(b = c = 10; a = "- FIGURE?, UMKC,XYZHello Folks,TFy!QJu ROo TNn(ROo)SLq SLq ULo+UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^NBELPeHBFHT}TnALVlBLOFAkHFOuFETpHCStHAUFAgcEAelclcn^r^r\\tZvYxXyT|S~Pn SPm SOn TNn ULo0ULo#ULo-WHq!WFs XDt!"[b+++21];)
{
for(;a-->64;)
{
putchar((++c == 'Z') ? (c = c/9) : (33^b&1));
}
}
getch();
}
可简化为:
char *string = "my string";
int i;
for (i = 0; string[i]; ++i)
/* do something with string[i] */
此外,可以将当前字符提取到单独的char
变量c
:
int i = 0;
for (; string[i++]; )
/* do something with string[i] */
也可以使用while循环:
int i = 0;
char c;
for (; c = string[i++]; )
/* do something with c */
这是我们的测试吗?看起来像是来自。这是值得怀疑的,如果这些是意味着理解。由我喜欢的输出+1.@user314723请只提取代码的相关部分。混淆的写作比赛条目对您和我们都没有好处。相关:
while (c = string[i++])
/* do something with c */