&豪
豪->blog
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:81 文章:91 评论:265 引用:0
变量初始化的重要性!
今天在做一道华为面试题目时候,就是因为没有将变量初始化,而导致我用了一节课的时间调试:)
题目是:找出01字符串中0和1出现的最大次数.
代码:
#include
<
iostream
>
#include
<
string
>
using
namespace
std;
void
main()
{
char
*
a
=
"
010000010111101101000000000
"
;
int
i,temp0
=
0
,temp1
=
0
,max0
=
0
,max1
=
0
;
//
对变量初始化,如果不初始化,变量值是随机的
for
(i
=
0
;i
<
strlen(a);i
++
)
{
switch
(a[i])
{
case
'
0
'
:
{
temp0
++
;
if
(a[i
+
1
]
==
'
1
'
||
i
==
strlen(a)
-
1
)
{
if
(max0
<
temp0) max0
=
temp0;
temp0
=
0
;
}
break
;
}
case
'
1
'
:
{
temp1
++
;
if
(a[i
+
1
]
==
'
0
'
||
i
==
strlen(a)
-
1
)
{
if
(max1
<
temp1) max1
=
temp1;
temp1
=
0
;
}
break
;
}
}
}
cout
<<
"
max0=
"
<<
max0
<<
endl;
cout
<<
"
max1=
"
<<
max1
<<
endl;
}
那为什么不对i初始化呢?因为尽管i没被初始化,它的初始值是随机的,但在循环参数表里面已经对他进行赋值,所以i的随机值已经被0覆盖。
发表于 2005-11-22 00:40
豪
阅读(1806)
评论(9)
编辑
收藏
引用
所属分类:
C++之梦
评论
#
re: 变量初始化的重要性!
#include <iostream>
void main()
{
char *a="010000010111101101000000000";
int max[2] = {0, 0};
int count[2] = {0, 0};
while(*a)
{
int index = *a - '0';
count[index] ++;
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
if(count[index] > max[index])
max[index] = count[index];
a++;
}
std::cout << "max 0: " << max[0] << std::endl;
std::cout << "max 1: " << max[1] << std::endl;
}
// output
// max 0: 9
// max 1: 4
点评:
1. 就C字串来说,从头到尾的遍历不需要for,用while是最佳选择。
2. strlen是很浪费的操作,如果非要用,对同一个不变长度的字串来说,用一个变量来存储,然后重复使用,比重复计算strlen要好得多。
3. 对数字串来说,可以直接将字符减去'0'得到相应的数字。
4. 比较判断其实并不比赋值省时,有时候直接赋值,比起比较后再赋值可能更有效率。更何况你的判断条件达三条之多才决定是否需要赋值。
所以if(a[i+1]=='0'/*或'1'*/||i==strlen(a)-1)可以省掉。
5. 利用数组的下标,会给你带来意想不到的简洁。
6. 最后,变量没有初始化,是算法设计的问题。如果初始条件都没有确定,只能说明你的算法没有想清楚。
#
re: 变量初始化的重要性!
非常感谢网志兄的点评,又学到东西啦!
这六条评论真是受益匪浅啊!
谢谢:)
#
re: 变量初始化的重要性!
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
这一行不懂。。。能否解释一下,谢谢:)
#
re: 变量初始化的重要性!
查了一下^是按位移或,不过我对位操作一窍不通。。。。。。。。
#
re: 变量初始化的重要性!
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
//===========================
觉得不如下面这个可读性好或简洁:
count[ ! index ] = 0;
个人意见哈^-^
#
re: 变量初始化的重要性!
意思是,这三条都可以。你可以选一条你认为能够理解的就可以了。
我建议用
count[index==0? 1 : 0] = 0;
至于可冰的count[!index] = 0;我觉得不好。!是表示逻辑非的操作,用在此处会让人误会,代码不好读。
#
re: 变量初始化的重要性!
呵呵,我明白啦,感谢大家啊!
#
re: 变量初始化的重要性!
变量随定义随初始化,随时的错误检查,这些都是c/c++编程必须要养成的"习惯".有无数的错误和这两个有关.
#
re: 变量初始化的重要性!
感谢土哥!
刷新评论列表
IT新闻:
·
Chrome的书签管理器即将升级
·
Palm目标股价被降至0美元 或难免被收购
·
惠普可卷折柔性显示屏展示
·
Intel年底发布USB 3.0控制器 暂无原生支持
·
德科学家用网络控制机器人探测海底世界
专题:
Android
iPad
jQuery
Chrome OS
博客园首页
IT新闻
知识库
学英语
C++程序员招聘
标题
姓名
主页
验证码
*
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
每天10分钟,轻松学英语
推荐职位:
·
飞信服务器端高级.NET开发工程师(新媒传信)
·
.NET飞信官网开发工程师(新媒传信)
·
.NET技术开发总监(广州衣酷)
·
ASP.NET资深工程师 (盛大网络)
·
.NET初级程序员 (北京安人)
·
.NET中级程序员 (北京安人)
·
中高级.NET工程师(沪江网)
·
前端开发工程师(沪江网)
博客园首页随笔:
·
关于选择方向
·
JSON in .NET
·
Linq自动生成的designer.cs无故被删除的问题的答案
·
sql分组查询前n条记录,生成xlm,xslt解析(新手实例)
·
MonoDevelop 让Mac OSx/ Linux ...下写C#更轻松
知识库:
·
有感于“研发人员的个人培养和组织培养”
·
SQL vs NoSQL:数据库并发写入性能比拼
·
让敏捷与“以用户为中心的设计”和谐共生
·
Apple、Google 之战渐显个人色彩
·
闾丘露薇:参观两间“小”公司
相关文章:
真是水,居然可以这样将int转成str
内存池(version1.1)
智能指针源码
More Effective 的 Reference Counting
从二叉树的递归遍历想到的:利用重载函数,使函数接口更"友好"
又是一题动态规划--经典
看 c++primer 后的一个问题
递归--->计算日期总数
不看书怎么见彩虹?
变量初始化的重要性!
网站导航:
博客园
IT新闻
博客园个人主页
BlogJava
博客生活
IT博客网
PHP博客
博客园社区
管理
<
2005年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
公告
潜心看书研究!
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(16)
给我留言
查看公开留言
查看私人留言
随笔分类
(80)
AJAX(1)
(rss)
C++之梦(11)
(rss)
DesignPattern(1)
(rss)
PHP之路(9)
(rss)
TCP/IP
(rss)
VC
(rss)
计算机图形学(2)
(rss)
生活感想(24)
(rss)
算法&ACM(32)
(rss)
文章分类
(89)
ACM题目(26)
(rss)
apache(3)
(rss)
Basic C++(8)
(rss)
Java(4)
(rss)
Linux(3)
(rss)
MFC(2)
(rss)
mysql(2)
(rss)
php学习与实践(4)
(rss)
Python(1)
(rss)
string match(3)
(rss)
操作系统(1)
(rss)
计算机(1)
(rss)
数据结构与算法(29)
(rss)
数论(1)
(rss)
网络(1)
(rss)
相册
MY LIFE
MY PRODUCTION
SCUT/ICPC MY TEAM
ACM OJ
HOJ
POJ
TOJ
URAL
UVA
ZOJ
My friends
Apple's Garden
asp's blog
chgsh's blog
evicn's blog
jay_zzw's blog
shyli's blog
sicheng's blog
xmm's blog
豪的space
踏雪赤兔's blog
搜索
积分与排名
积分 - 107783
排名 - 39
最新评论
1. re: 二分图最大匹配(匈牙利算法)
@icuiliang
ifstream cin( " test.txt " );
--纳米
2. re: 好高兴啊,a+b那题一次通过啦,acm有个好开始!!!^_^
很好 ,,呵呵
--双色球
3. re: 用stl打spfa短了1k代码,慢了200ms
這不是SPFA喔...
--路過
4. re: 二分图最大匹配(匈牙利算法)
明明是从文件中读的您还使用cin...
--icuiliang
5. re: 三次样条插值
可否请楼主再加一点注释,看不太懂。。。我们学的三次样条是要解矩阵的,可是楼主的看来很简单。。。犹其是m数组和sunc,看不懂原理。。。不胜感谢
--泉映石
阅读排行榜
1. 中国剩余定理(同余方程组)小结(3579)
2. 扫描线-通用多边形填充算法(2858)
3. 内存池(version1.1)(2513)
4. 看 c++primer 后的一个问题(2212)
5. 扩展的欧拉函数 pku1091(1845)
评论排行榜
1. 好高兴啊,a+b那题一次通过啦,acm有个好开始!!!^_^(32)
2. 看 c++primer 后的一个问题(14)
3. 今天又过条简单题,呵呵(14)
4. 从二叉树的递归遍历想到的:利用重载函数,使函数接口更"友好"(9)
5. 今天有点郁闷!~(9)