c: 关于字符串转换问题?

g472786315 2014-09-25 09:58:41
我的代码如下,因为5<6,所以应该输出false, 可是这里老是输出True,应该怎么办啊?
char * ch="5>6";
if(ch){
printf("True");
}else{
printf("False");
}
...全文
222 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wnjason 2014-10-01
  • 打赏
  • 举报
回复
ch的值是字符指针变量的地址是大于1的,c语言中的逻辑判断非0即为1,所以会一直输出True
实况灬天河 2014-09-30
  • 打赏
  • 举报
回复
Uron 2014-09-29
  • 打赏
  • 举报
回复
Lion_Peng 2014-09-29
  • 打赏
  • 举报
回复
"5>6"是个字符串,表示指向首元素的指针(非NULL),所以if(ch)一直为真
707wk 2014-09-29
  • 打赏
  • 举报
回复
你吓着我了,赔钱!
liuzhemin12 2014-09-28
  • 打赏
  • 举报
回复
字符串怎么比较 你弄错了吧
lkxd2011 2014-09-26
  • 打赏
  • 举报
回复
字符串的值为真,当然输出TRUE了
竹影半墙 2014-09-26
  • 打赏
  • 举报
回复
"5<6"作为右值是个地址。
赵4老师 2014-09-26
  • 打赏
  • 举报
回复
直接引语、间接引语
starytx 2014-09-26
  • 打赏
  • 举报
回复
ch是一个字符指针,如果这个指针不指向NULL(0),那么他就是成立的,所以会进入true。和字符串里的内容没有任何关系
  • 打赏
  • 举报
回复
"5<6"是个字符串,不是数学表达式啊老兄。
mujiok2003 2014-09-25
  • 打赏
  • 举报
回复
unix/linux中有一个bc 语言可以用来计算表达式的值。

bc <<!
print 5 < 6
!
会输出 1 bc 配合管道就可以在C中动态计算表达的值。
#include <stdio.h>

int main(int argc, char* argv[])
{
  char  cmd[1024];
  char const* fmt=
    "bc <<!\n"
    "%s\n"
    "!";
  sprintf(cmd, fmt, argv[1]);
  FILE* pipe  = popen(cmd,"r");
  if(pipe)
  {
    int ch;
    while((ch = fgetc(pipe)) != EOF){
        fputc(ch, stdout);
    }
    pclose(pipe);
  }
  return 0;
}

用法:

./eval "5 < 6"
./eval " 100 * 5 + 7"
帅气小小少 2014-09-25
  • 打赏
  • 举报
回复
char * ch="5>6"; 是个字符串。ch是个指针,永远大于0的!(NULL指针不考虑)
derekrose 2014-09-25
  • 打赏
  • 举报
回复
bool s = 5 < 6

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧