阻止范围访问内部和外部变量

时间:2018-04-18 05:27:55

标签: c++

我无法理解为什么变量' xt'和' xs'只访问内部参数(xt = 12,xs = 23),当我打印此代码的第一个变量' xy'给出了内部和外部参数(10,22),但其余的变量只打印了块内的内部参数。

#include <iostream>
using namespace std;

int main()
{
   int xy=10;
   int xt=11;
   int xs=33;
   { int xy;
     xy=22;
     xt=12;
     xs=23;
     cout<<xy<<"  "<<xt<<" "<<xs<< endl;
   }
   cout<<xy<<"  "<<xt<<" "<<xs<< endl;
   return 0;
 }

输出结果为:

22  12 23
10  12 23

2 个答案:

答案 0 :(得分:3)

块中的

xy与函数范围中的xy不同,因为您使用

在块内再次定义xy
int xy;

因此,当您修改块中的xy时,您不会修改函数范围中同名变量的值。

另一方面,只有一个xt和一个xs。当您在块中修改它们的值时,您将在整个函数范围内修改它们,而不仅仅是在块范围内。

答案 1 :(得分:2)

您在内部范围内创建了一个品牌 new <?php $args_product = array( 'post_type' => 'product', 'posts_per_page' => 10, 'orderby'=>'title', 'order'=>'ASC', 'product_cat' => $all_categories_data->slug ); $loop_product = new WP_Query( $args_product ); while ( $loop_product->have_posts() ) : $loop_product->the_post(); ?> <div > <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <div> <p>Posted by <?php the_author_posts_link(); ?> on <?php the_time('n.j.y'); ?> in <?php echo get_the_category_list(', '); ?></p> </div> <div> <?php the_excerpt(); ?> <p><a href="<?php the_permalink(); ?>">Continue reading &raquo;</a></p> </div> <div> <span><?php echo $all_categories_data->name;?></span> </div> </div> <?php endwhile;?> 对象,该对象与外部范围中的对象完全无关。

所以那是在内部范围内被改变和打印的那个。

但是,内部范围到import React from 'react'; import { render } from 'react-dom'; const Box = ({color}) => ( <div> this is box, with color of {color} </div> ); class ColoredBox extends React.Component { state = { color: 'red' } getState() { return { color: this.state.color } } render() { return this.props.children(this.getState()) } } render(<ColoredBox><Box /></ColoredBox>, document.getElementById('root')); xy的更改适用于外部范围变量,因为没有内部范围隐藏它们。

以下是实际发生的事情:

xt

我经常发现,根据C编译器从内到外搜索各种范围,直到找到第一个具有匹配名称的对象为止,这是有用的。