首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

笔考题目搜集(5)

2013-09-07 
笔试题目搜集(5)1.下面printf执行的结果int main(void){char a 255printf(%d\n,sizeof(a))printf(%

笔试题目搜集(5)

1.下面printf执行的结果

  1. int main(void)  
  2. {  
  3.     char a = 255;  
  4.     printf("%d\n",sizeof(++a));  
  5.     printf("%d\n",a);  
  6.     return 0;  
结果:1  -1。据说sizeof这句话并没有执行

  1. int main(void)  
  2. {  
  3.     char a = 255;  
  4.     printf("%x\n",a);
  5.     return 0;  
结果:ffffffff,高位自动补1了?

#include <iostream>#include <vector>using namespace std;void print(vector<int>ivec){vector<int>::iterator iter;for(iter=ivec.begin(); iter!=ivec.end();++iter){cout<<*iter<<" ";}}int main(){vector<int>ivec;ivec.push_back(1);ivec.push_back(6);ivec.push_back(6);ivec.push_back(5);vector<int>::iterator iter1,iter2;for(iter1=ivec.begin(); iter1!=ivec.end();){if(*iter1 == 6){iter2 = iter1;ivec.erase(iter2);--iter1;}++iter1;}print(ivec);system("pause");}
这是一个迭代器失效问题,只能删除第一个6以后的迭代器就失效了,不能删除后面的元素了。iter2=iter1,这句说明iter1和iter2是一样的,erase(iter2),这时指针已指向下一个元素6了,在iter1++,指向了元素3.


热点排行