回复:单行脚本:让一个按钮翻转一个变量的状态!主要是解决有些朋友问的VBS下的翻转

Ken(小释)

  • 帖子

    285
  • 精华

    19
  • 被关注

    14

论坛等级:侠士

注册时间:2008-11-13

普通 普通 如何晋级?

发布于 2011-10-25 14:44:30

7楼

quote:以下是引用划痕在2011-10-24 16:39:09的发言:
今天才注意到这个帖子,就简单补充一下:
将Boolean量取反输出的C代码严谨的写法如下
SetTagBit("Tag",(short)!(GetTagBit("Tag")));
//得到Tag的值取非,写回去!
而此语句SetTagBit("Tag",!GetTagBit("Tag"));//在编译过程中会出现警告


仔仔细细的看完划痕的回复,思想活动和动作过程如下:
1.不用编译器,不用环境。我肉眼看上去,百思不得其解,这个逻辑,这个变量长度都不会有错啊!
2.所以我打开了我心爱的VM,快速的Resume了我WinCC 6.2 Sp2 Asian。测试!
3.测试结果 Warning(0011) : conversion may loose information
4.乖乖 还真有报错? 胡乱翻译一下:转换可能丢失信息 我:意思是说这里面涉及到数据类型的转换?
5.仔细一看都是Boolean型的操作啊?等等……Boolean型?我记得很多C编译环境都不支持Boolean啊!我们以前要用Boolean 都是
#define TRUE 1
#define FALSE 0
GetTagBit("Tag")明明白白的写着return type 是BOOL 难道我对它的返回值进行!操作就要报错?
6.再做测试 !GetTagBit("Tag"); 测试结果:没有错误!
7.奇怪了,不急不急 还有半截我们没有测试呢 SetTagBit 先看看它的定义!
SetTagBit
Function
Sets the value of a tag of data type "Binary tag".
Syntax
BOOL SetTagBit(Tag Tag_Name, short int value);

Tag_Name
name of the tag

value
Value of the tag in the data type "short int"

8.乖乖,看见没 看见没人家清清楚楚明明白白的写着 Short Int 短整型啊!
9原来 SetTagBit(Tag, value); 中的value是短整型,这里我们将一个布尔型“隐式”的转换成了一个短整型。就相当于用更大的存储空间存了一个需要空间很小的值。出现了存储空间大小的变换。所以出现警告,但是这个警告完全可以不去纠结它,因为是小到大,不是大到小。不会loose information的!
放心使用!
报告组织思想活动和实际行动汇报完毕!
BTW: 划痕大侠 我咋感觉我们认识呢?好像还在哪里一起讨论过问题!好像是PCS7的问题的!
Ken(小释)…西门子自动化技术群16182848
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32575条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。