今天在基础课上,老师讲到作用域,我想到我以前解答的一道关于C语言作用域的问题,希望能给同学一点帮助
#include<stdio.h> main(){int i=5;{i++;} printf("%d",i);} 块总用域不是只在花括号内的吗,i++只作用于内层花括号,i++只在内层花括号中实现,最后结果应该是5,为什么最后结果是6呢?解答 你这是没有明白作用域的真正含义,首先,谈作用域,其对象是变量,比如i,a,b。而不是表达式,比如你说的i++。其次,你在main中定义了变量i,那么在整个main中,它都是有效的,除非你在内存花括号中重新定义i,那么在花括号中第一个i会暂时失效,执行完花括号中的语句后,第一个i才恢复有效。对表达式,我们关心的是其是否被执行。比如你给的例子中,表达式i++外面的花括号有没有都一样,i++都会被执行。
|
|