求教c语言的嵌套

Python011

求教c语言的嵌套,第1张

printf("请输入a的值")

scanf("%d",&a)

if(a<10)//a=0的时候,明显符合a<10条件,但是不符合里面嵌套的a>1条件,不做任何操作。

{

if(a>1)

t=1

}

else t=2

printf("请输入a的值")

scanf("%d",&a)

if(a<10)//a=100,第一步验证就不符合条件,又没有else语句对应,也是什么都不做

{

if(a>1)

t=1

else t=2

}

我还是加上第二题的实战图吧:

我初始化t为99999了,防止输出未初始化的变量。可以看到99999并没有改变。也就是说a=100的时候,没有影响到t。不要看死书了,按自己的逻辑理解吧。

总之看if 的嵌套,else总是与最近的if成对。然后自己加大括号对好格式,用手写在纸上画明了一点。希望能帮到你!

就是在一个语句的内部,含有一个或更多的同种语句。

例如:

if(条件1)

{if(条件2)....}

例如:

for(i=0i<5i++)

{for(j=0j<10j++)

....

}

一般的宏嵌套展开规则是 由内向外 ,先将内层宏展开,再把外层宏展开:

输出:

嵌套宏 B(A(2)) 会先展开为 B((2 + 5)) ,然后再展开为 ((2 + 5) * 5) ,所以最终结果为35

如果宏的参数直接带有 # ,则不会展开内层的嵌套宏

输出:

因为 STR 宏的参数直接带有 # ,所以 STR 内部嵌套的内容不会被进一步展开,故 STR(ADD(3, 4)) 输出为 ADD(3, 4) ;

因为 TO_STR 宏的内容并没有 # ,所以嵌套的宏 ADD(3, 4) 依旧可以展开,故 TO_STR(ADD(3, 4)) 输出结果为 (3 + 4) ;

如果宏的参数直接带有 ## ,则会先将参数通过 ## 拼接,然后再依次进行展开

输出:

由于 DEF_VAR 中带有 ## 所以会先将里面的内容使用 ## 拼接,所以会最先展开为 TO_STR(var_PARAM(10)) ,由于展开后 PARAM(10) 已经变成了 var_PARAM(10) ,已经不是有效的宏了,所以最终再经过 TO_STR 的转换后,结果就是 var_PARAM(10)