leisurely8rust


05.运算符

<h1>05.运算符</h1> <h2>1、算术运算符 +-*/%</h2> <pre><code>fn main() { // 加法 let sum = 5 + 10; // 减法 let difference = 95.5 - 4.3; // 乘法 let product = 4 * 30; // 除法 let quotient = 56.7 / 32.2; // 求余 let remainder = 43 % 5; }</code></pre> <p>综合案例: 1、自动推导类型 2、可以通过后缀方式标注:22是i32类型 3、只有同样类型,才能运算 4、对于较长的数字,可以用下划线进行分割,提升可读性 5、数组中定义一个f32类型,其他浮点数也会被自动推导为f32类型 6、打印数组中第一个值,并控制小数位为2位</p> <pre><code>fn main() { // 编译器会进行自动推导,给予twenty i32的类型 let twenty = 20; // 类型标注 let twenty_one: i32 = 21; // 通过类型后缀的方式进行类型标注:22是i32类型 let twenty_two = 22i32; // 只有同样类型,才能运算 let addition = twenty + twenty_one + twenty_two; println!(&amp;quot;{} + {} + {} = {}&amp;quot;, twenty, twenty_one, twenty_two, addition); // 对于较长的数字,可以用_进行分割,提升可读性 let one_million: i64 = 1_000_000; println!(&amp;quot;{}&amp;quot;, one_million.pow(2)); // 数组中定义一个f32类型,其他浮点数也会被自动推导为f32类型 let forty_twos = [ 42.0, 42f32, 42.0_f32, ]; // 打印数组中第一个值,并控制小数位为2位 println!(&amp;quot;{:.2}&amp;quot;, forty_twos[0]); }</code></pre> <h2>2、位运算符&amp;|^!&lt;&lt;&gt;&gt;</h2> <pre><code>运算符 说明 &amp;amp; 位与 相同位置均为1时则为1,否则为0 | 位或 相同位置只要有1时则为1,否则为0 ^ 异或 相同位置不相同则为1,相同则为0 ! 位非 把位中的0和1相互取反,即0置为1,1置为0 &amp;lt;&amp;lt; 左移 所有位向左移动指定位数,右位补0 &amp;gt;&amp;gt; 右移 所有位向右移动指定位数,带符号移动(正数补0,负数补1)</code></pre> <p>综合使用</p> <pre><code>fn main() { // 无符号8位整数,二进制为00000010 let a: u8 = 2; // 也可以写 let a: u8 = 0b_0000_0010; // 二进制为00000011 let b: u8 = 3; // {:08b}:左高右低输出二进制01,不足8位则高位补0 println!(&amp;quot;a value is {:08b}&amp;quot;, a); println!(&amp;quot;b value is {:08b}&amp;quot;, b); println!(&amp;quot;(a &amp;amp; b) value is {:08b}&amp;quot;, a &amp;amp; b); println!(&amp;quot;(a | b) value is {:08b}&amp;quot;, a | b); println!(&amp;quot;(a ^ b) value is {:08b}&amp;quot;, a ^ b); println!(&amp;quot;(!b) value is {:08b}&amp;quot;, !b); println!(&amp;quot;(a &amp;lt;&amp;lt; b) value is {:08b}&amp;quot;, a &amp;lt;&amp;lt; b); println!(&amp;quot;(a &amp;gt;&amp;gt; b) value is {:08b}&amp;quot;, a &amp;gt;&amp;gt; b); let mut a = a; // 注意这些计算符除了!之外都可以加上=进行赋值 (因为!=要用来判断不等于) a &amp;lt;&amp;lt;= b; println!(&amp;quot;(a &amp;lt;&amp;lt; b) value is {:08b}&amp;quot;, a); }</code></pre>

页面列表

ITEM_HTML