第1个回答 2013-12-27
while(c=str[i]!='\0')
改成
while((c=str[i])!='\0')
赋值运算是从右到左运行的
也就是说如果不加括号
c=str[i]!='\0'
就相当于
c=(str[i]!='\0')
也就是说
c是么1,要么是0
而ascii码值1 就是对应白底笑脸的,也就出现了你的结果
第2个回答 2013-12-27
while(c=str[i] !='\0')
这句有问题
你是想实现将str[i]赋值给c,然后判断c!='\0'
但是,逻辑运算先结合了,就是先判断str[i]!='\0',再将逻辑判断的结果赋值给c
结果你的c全部都等于1,直至字符串终结
应该加个括号
while((c=str[i])!='\0')
或者,直接这样写
while(c=str[i] )
第3个回答 2013-12-27
运算符优先级问题你少括号了
第4个回答 2013-12-27
c = str[i] != '\0' // 相当于 c = (str[i] != '\0');
优先级问题。本回答被提问者采纳
第5个回答 2013-12-27
把 while (c = str[i] != '\0') 改成 while ((c = str[i]) != 0)
运算符优先级问题