比如我用AD采样电压值,一个光电池电压PV,一个蓄电池电压BAT,计算出来PV的值为负电压,BAT的电压为正值,
如果PV值为-5V,BAT电压为12V,为什么if(PV>BAT)这句函数居然成立,用if(PV>0)这句函数就不成立,为什么!!!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
比如我用AD采样电压值,一个光电池电压PV,一个蓄电池电压BAT,计算出来PV的值为负电压,BAT的电压为正值,
如果PV值为-5V,BAT电压为12V,为什么if(PV>BAT)这句函数居然成立,用if(PV>0)这句函数就不成立,为什么!!!
?没明白你的意思?我的PV值类型为int型,BAT为unsigned int 型,PV需要采样负电压。
yongmin liu 说:?没明白你的意思?我的PV值类型为int型,BAT为unsigned int 型,PV需要采样负电压。
那就对了,你的用法有问题:C中无符号与有符号进行比较时,会先将有符号数转化为无符号数
那我应该怎么办呀,有没有好的方法能识别出来PV是个负数呀,但if(-5>-10)可以成立!C语言太专业了,新手一个呀!
统一数型。
当然能识别,只不过是比较的时候要进行那个转化而已。对不同的数据类型进行操作的时候,编译器都要先转化为同型才能操作,转化有规则,参见C语言基础知识的数型部分。
C语言的知识还是需要的,要不然会出各种问题,自己多学习吧。
yongmin liu 说:目前是这么做的,还没发现高深的办法……不知TI的工程师有没有好的解决办法!!!
统一数型
不能统一,要求PV有负值,要是让BAT也为无符号的变量后,后期还有其他与BAT比较的呢,后期程序会很麻烦!!!