c语言运算符优先级实例解析

壹:
   对于优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。这是程序员总结出来的最快的学习方式。
可在实战中,还是经常遇到一些让人困惑的问题。下面看一个实例。
 
贰:
   代码很简单,直接上源码:
#include <stdio.h>
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
uint8_t buf3[] = {0x12,0x34,0x56,0x78};
int main()
{

        // unexpected result
        uint32_t tick_num1 = buf3[0]<<8 + buf3[1];
        printf("tick_num1 is:0x%x \n\r",tick_num1);

        uint32_t tick_num2 = (buf3[0]<<8) + buf3[1];
        printf("tick_num2 is:0x%x \n\r",tick_num2);

        // unexpected result
        uint32_t tick_num3 = buf3[0] + buf3[1]<<8 + buf3[2]<<16 + buf3[3]<<24;
        printf("tick_num3 is:0x%x \n\r",tick_num3);

        // expected result
        uint32_t tick_num4 = buf3[3] + (buf3[2]<<8) + (buf3[1]<<16) + (buf3[0]<<24);
        printf("tick_num4 is:0x%x \n\r",tick_num4);

        return 0;
}
假如不看运算结果,估计没几个人能把这个结果算出来,不信的话你可以试试。对的话直接来我们公司面试即可。
叁:
 下面是运算结果,是不是有些出乎你的预料呢?
➜  char_vs_int git:(master) ✗ ./test 
tick_num1 is:0x20000000 
tick_num2 is:0x1234 
tick_num3 is:0x0 
tick_num4 is:0x12345678 

建议吃不准的同学还是尽量加括号,这样才不至于犯大错。

原文链接:https://www.cnblogs.com/dylancao/p/17165159.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c语言运算符优先级实例解析 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 详解C++句柄类

    详解C++句柄类 在C++中,句柄类是一种将资源管理委托给类实例的方法,以确保正确地释放使用的资源。本篇文章将详细讲解什么是C++句柄类,并展示了如何创建和使用句柄类。 什么是句柄类? 句柄类是一种 C++ 类,主要用于管理资源,通过封装对资源的访问来确保资源有效使用。句柄类通常用于管理底层的操作系统资源,例如文件、网络套接字、设备上下文、数据库连接等。在释…

    C 2023年5月22日
    00
  • C++控制台实现简单人机对弈井字棋

    下面是详细的攻略步骤: 1. 确定游戏基本流程 首先需要明确游戏的基本流程。井字棋游戏中,两名玩家轮流在3*3的棋盘上落子,最先在同一行、同一列或者同一对角线上连成3个相同的棋子的玩家获胜。游戏流程中需要完成的任务如下: 初始化棋盘,将所有格子标记为空 轮流落子(先手为玩家,后手为电脑) 判断当前落子方是否获胜 判断是否和棋 输出当前棋盘 2. 实现井字棋游…

    C 2023年5月23日
    00
  • C语言实现酒店客房管理系统课程设计

    C语言实现酒店客房管理系统课程设计攻略 1. 确定项目需求 在开始设计酒店客房管理系统之前,需要明确项目需求,明确系统需要实现哪些功能以及对应的数据结构和算法等。通常,酒店客房管理系统需要实现以下功能: 客房预定:记录客人预定信息,包括客人信息、入住时间、预计离开时间等; 房态管理:查看客房状态、入住情况、空闲房间等; 房价管理:设置客房价格、优惠政策、房间…

    C 2023年5月23日
    00
  • VS2019开发Linux C++程序的实现步骤

    实现步骤: 安装Visual Studio 2019(注意:需要安装Linux工作负载) 在VS中安装Linux C++开发组件 在VS中创建一个新的Linux C++ 项目(例如console应用程序项目) 配置Linux环境,包括SSH连接、CMake、交叉编译器等。可以参考官方文档和其他教程进行配置。 编写C++代码并进行调试。在VS中按F5可启动调试…

    C 2023年5月23日
    00
  • C语言如何计算一个整数的位数

    计算一个整数的位数可以分为两个步骤:首先判断其是几位数,然后将其位数输出。以下是这个过程的完整攻略: 判断整数的位数 要判断一个整数有几位,需要用到循环。以下是代码示例: int digitCount(int num) { int count = 0; while (num != 0) { count++; num /= 10; } return count…

    C 2023年5月23日
    00
  • C语言学习笔记之VS2022安装使用教程

    下面是C语言学习笔记之VS2022安装使用教程的完整攻略: 1. 下载VS2022安装程序 首先需要从官网下载Visual Studio 2022的安装程序,官网链接为 https://visualstudio.microsoft.com/vs/。在该网址中可以选择自己想要的Visual Studio版本进行下载,下载完成后直接双击安装程序即可开始安装。 2…

    C 2023年5月23日
    00
  • C++中异常机制的实现机制详解

    C++中异常机制的实现机制详解 异常(Exception)是指程序运行时出现的一些不可预知的错误,比如非法输入、内存分配失败等。异常处理机制可以让程序在遇到异常时不会立即崩溃,而是可以做一些处理,让程序能够在异常发生后继续执行。 C++中的异常处理机制分为三个部分:抛出异常、捕获异常和处理异常。下面我们来详细讲解它们的实现机制。 抛出异常 抛出异常使用thr…

    C 2023年5月22日
    00
  • php获取一定范围内取N个不重复的随机数

    想要获取一定范围内取N个不重复的随机数,在 PHP 中可以采用下面这个简单的方法: <?php $min = 1; $max = 10; $n = 5; $numbers = range($min, $max); shuffle($numbers); $random_numbers = array_slice($numbers, 0, $n); pri…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部