万博1manbetx支持图表数据的操作
二进制和逐位操作
下表总结了解释二元操作符的C图表。这些操作符使用以下优先顺序(0 =最高,最低10 =)。相同的逻辑二元操作符优先级评估从左到右。评估其他运营商的订单是未指定的。例如,的顺序foo ()
和酒吧()
评估中未指定的作业如下。
= foo() >栏();
可预测的结果,是良好的编程实践的表达式,取决于评价的顺序分割成多个语句。
您可以指定二元操作符&
,^
,|
,& &
,| |
解释为Stateflow位运营商吗®生成C代码为所有的图或图表模型中。看到这些个人运营商在下表中特定的二进制或逐位运算符解释。
例子 |
优先级 |
描述 |
---|---|---|
0 |
操作数 当你明确启用使c位操作在图表属性对话框。看到指定表的属性。 |
|
1 |
乘法 |
|
1 |
部门 |
|
1 |
剩余部分 |
|
2 |
除了 |
|
2 |
减法 |
|
3 |
改变操作数 |
|
3 |
改变操作数 |
|
4 |
比较第一个操作数大于第二个操作数 |
|
|
4 |
比较第一个操作数小于第二个操作数 |
|
4 |
比较第一个操作数大于或等于第二个操作数 |
|
4 |
比较第一个操作数小于或等于第二个操作数 |
|
5 |
比较平等的两个操作数 |
|
5 |
比较两个操作数的不平等 |
|
5 |
比较两个操作数的不平等 |
|
5 |
比较两个操作数的不平等 |
6 |
下列之一:
|
|
7 |
按位异或两个操作数 当您选择启用使c位操作在图表属性对话框(默认)。看到指定表的属性。 |
|
8 |
下列之一:
|
|
9 |
逻辑的两个操作数 |
|
10 |
逻辑或两个操作数 |
一元操作
以下一元操作符支持C图表。万博1manbetx一元操作符的优先级高于二元操作符,除了电力运营商a ^
。电力运营商有最高的优先级。运营商评估右到左(右关联)。
例子 |
描述 |
---|---|
|
逻辑不 补充的 |
|
逻辑不 |
|
消极的 |
一元操作
以下一元行动支持C图表。万博1manbetx
例子 |
描述 |
---|---|
|
增量 |
|
减量 |
赋值操作
下面的赋值操作支持C图表。万博1manbetx
例子 |
描述 |
---|---|
|
简单的任务 |
|
与定点数主要使用。看到赋值(=。=)操作详细描述。 |
|
相当于 |
|
相当于 |
|
相当于 |
|
相当于 |
下面的赋值操作是在C图支持万博1manbetx使c位操作在属性对话框中选择的图表。看到指定表的属性。
指针和地址操作
地址操作符(&)可以在C图表Stateflow和使用自定义代码变量。指针运算符(*)只使用自定义代码变量。
请注意
解析器使用一套放松限制,不抓直到编译时语法错误。
下面的例子显示了两个Stateflow的语法,是有效的和自定义代码变量。前缀cc_
显示了您可以使用的地方只有定制代码变量,和前缀sfcc_
显示了您可以使用的地方Stateflow或自定义代码变量。
cc_varPtr = &sfcc_var;cc_ptr = &sfcc_varArray(<表达式>);cc_function (&sfcc_varA &sfcc_varB &sfcc_varC);cc_function (&sfcc_sf.varArray[<表达式>]);
下面的例子展示语法,只有定制代码变量是有效的。
varStruct。场= <表达式>;(* varPtr) = <表达式>;varPtr - >字段= <表达式>;myvar# = varPtr - >字段;varPtrArray(指数)- >字段= <表达式>;varPtrArray(表达式)- >字段= <表达式>;myvar# = varPtrArray(表达式)- >字段;
类型转换操作
您可以使用运营商类型转换为一个类型的值转换为可以在另一种类型的值。通常情况下,您不需要使用类型转换操作符的行为因为Stateflow软件检查是否参与变量赋值不同类型和补偿插入所需的目标语言类型转换操作符(通常是C)在生成的代码。然而,外部(自定义)的代码可能需要从这些目前可用的数据在不同的类型。在这种情况下,Stateflow软件不能确定所需类型强制转换,您必须显式地使用类型转换操作符来指定目标语言类型转换操作符生成。
例如,您可能有一个自定义代码函数图形情节需要整数RGB值。你可能在Stateflow这些值数据,但只有在数据的类型双
。要调用这个函数,必须铸型的原始数据,并将结果分配给整数,你使用作为参数的函数。
Stateflow铸造操作类型有两种形式:MATLAB®使用类型转换形式和显式形式投
操作符。这些操作符和特别类型
运营商,与明确投
运营商,介绍了主题。
MATLAB表单类型演员运营商
MATLAB类型铸造形成的一般形式
< type_op >(<表达式>)
< type_op >
是一种转换操作符,可以吗双
,单
,int32
,int16
,int8
,uint32
,uint16
,uint8
,或布尔
。<表达式>
是要转换的表达式。例如,您可以把表达式x + 3
一个16位的无符号整数,将它的值分配给数据y
如下:
y = uint16 (x + 3)
显式类型转换运算符
你还可以与显式类型转换投
操作符,一般形式如下:
演员(<表达式>,<类型>)
在前面的示例中,声明
y =投(x + 3,“uint16”)
会表达x + 3
一个16位的无符号整数,并将其分配给y
,它可以是任何类型的。
类型操作符
型铸造更方便,你可以使用一个类型
运营商与显式类型转换运算符投
让你指定类型的数据基于类型的其他数据。
的类型
操作符返回的类型现有Stateflow数据根据一般形式
类型(<数据>)
在哪里<数据>
是你想要返回的数据类型。
的返回值类型
只在一个显式的操作可以使用投
操作。例如,如果你想要转换的数据y
相同类型的数据z
使用下面的语句:
铸造(y,类型(z))
在这种情况下,数据z
任何可接受的Stateflow类型。
替换操作符与应用程序的实现
您可以配置代码生成器等运营商改变它生成的代码的代码符合应用的要求。要做到这一点,你配置代码生成器应用代码替换库(CRL)代码生成。如果你有一个嵌入式编码器®许可证,您可以开发和应用自定义代码替换库。
运营商条目的代码替换库可以指定积分或定点操作数和结果模式。运营商条目可以用于以下内置操作符:
+ |
- - - - - - |
* |
/ |
例如,您可以更换一个表达式等y = u1 + u2
有针对性的实现,只要u1
,u2
,y
类型,允许一个匹配的代码中添加条目替换库。
C表语义可能会限制算子条目匹配,因为图表使用目标整数大小作为其在算术表达式的中间类型。例如,假设一个Stateflow行动包含算术表达式:
y = (u1 + u2) % 3
这个表达式计算中间添加到一个目标整数。如果目标整数大小是32位,你不能用一个加法操作符的代码替换这个表达式替换库产生一个签署了16位的结果,不损失精度。
关于替换代码的更多信息,使用代码替换MathWorks的库®提供,请参阅什么是代码替换?(万博1manbetx仿真软件编码器)和代码替换库(万博1manbetx仿真软件编码器)。开发自定义代码替换库的信息,请参阅代码替换定制是什么?(嵌入式编码)代码你可以取代从仿真软件模型万博1manbetx(嵌入式编码)。