读书人

笔考题目搜集(5)

发布时间: 2013-09-07 14:12:44 作者: rapoo

笔试题目搜集(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;
  7. }
结果:1 -1。据说sizeof这句话并没有执行

  1. int main(void)
  2. {
  3. char a = 255;
  4. printf("%x\n",a);
  5. return 0;
  6. }
结果: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.


读书人网 >编程

热点推荐