c/c++ 奇技淫巧(一些c语言的技巧)

c/c++ 奇技淫巧(一些c语言的技巧)

1. 变量交换

有时我们需要交换两个变量的值,一般的做法是使用中间变量,但是有一个巧妙的方法可以不使用中间变量交换两个变量的值。

int a = 10, b = 5;
a -= b; // a = 5
b += a; // b = 10
a = b - a; // a = 5

2. 求绝对值

结合位运算,可以使用以下代码快速计算一个数的绝对值:

int abs(int x) {
    int y = x >> 31; // 取x的符号位
    return (x ^ y) - y; // x与y异或,再减去y就是绝对值
}

3. 取一个数的倒数

除了直接使用1.0/x计算,还可以使用以下代码:

double inv(double x) {
    int temp = *(int*)&x;
    temp = 0x7FFFFFFF - temp; // 将符号位置0
    return *(double*)&temp;
}

以上就是c/c++奇技淫巧的一些示例,希望对大家有所启发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c/c++ 奇技淫巧(一些c语言的技巧) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言超详细讲解文件的操作

    一、文件的操作 在C语言中,文件是通过文件指针来进行操作的,每打开一个文件都有一个对应的文件指针,这个指针指向文件中当前指针所在的位置。文件指针在初始化时会指向文件开始处。 二、文件指针的操作 在C语言中,FILE类型是对文件指针进行封装的结构体类型。 文件指针操作常用的函数包括: fopen (file open) :打开文件 fclose (file c…

    C 2023年5月23日
    00
  • Rust处理错误的实现方法

    当我们在编写 Rust 代码时,不可避免地会遇到错误。Rust 的错误处理机制允许我们有效地处理和跟踪错误,以确保程序稳定的运行。 在 Rust 中,错误通常被表示为实现了 std::error::Error trait 的结构体。这个 trait 定义了两个方法,description() 和 cause(),分别用于返回错误信息和错误原因。我们也可以通过…

    C 2023年5月23日
    00
  • C 语言基础之C 语言三大语句注意事项

    C 语言是一门被广泛应用的编程语言,它的基础语法并不复杂,但是初学者在使用C语言时,常会遇到一些比较容易犯错的问题,特别是在使用C语言的三大语句的时候。本文将详细介绍C语言三大语句之if语句、for语句和while语句的使用规则和注意事项,并提供相应的示例说明。 一、if语句注意事项 if语句是C语言中最常用的分支结构语句,使用if语句可以让程序进行有条件的…

    C 2023年5月24日
    00
  • C++面向对象实现万年历的示例代码

    以下是对 C++面向对象实现万年历的示例代码 的详细讲解攻略。 前置知识 在学习本教程前,我们需要掌握以下基础知识: C++的基本语法 C++中的面向对象编程 C++中文件操作的基本操作 C++中的日期和时间处理 示例代码 下面是一个简单的C++面向对象实现万年历的示例代码: #include <iostream> #include <fs…

    C 2023年5月22日
    00
  • C++实现简单计算器

    下面是详细讲解C++实现简单计算器的攻略。 简介 首先,我们需要明确计算器的功能,一般包括四则运算(加、减、乘、除)和括号优先级。在本文中,我们将通过C++实现一个简单的支持四则运算和括号优先级的计算器。 实现 1. 中缀表达式转后缀表达式 中缀表达式的运算顺序不够明确,我们需要将中缀表达式转换成后缀表达式。下面是中缀表达式转后缀表达式的伪代码: 遍历中缀表…

    C 2023年5月23日
    00
  • C#操作 JSON方法汇总

    C#是一种通用的编程语言,也是.NET框架的标准语言之一。许多开发者在使用C#开发项目时会经常使用JSON数据格式。操作JSON数据格式时,我们可以使用很多方法,下面介绍一下C#操作JSON数据的方法汇总。 1. 引用json.net库 在使用C#操作JSON数据时,可以使用第三方JSON库Newtonsoft.Json,该库是一个高性能的JSON框架,使用…

    C 2023年5月23日
    00
  • 详解C++ 拷贝构造函数和赋值运算符

    标题:详解C++ 拷贝构造函数和赋值运算符 什么是拷贝构造函数和赋值运算符 在C++中,每一个类都有一个默认的拷贝构造函数和赋值运算符。拷贝构造函数和赋值运算符的作用是对一个已经存在的对象进行复制。 拷贝构造函数用于创建一个新对象并将某个已经存在的对象的值赋给它。赋值运算符则在已有对象上操作。 拷贝构造函数 拷贝构造函数的定义格式如下: ClassName(…

    C 2023年5月22日
    00
  • Go项目中添加生成时间与版本信息的方法

    在Go项目中添加生成时间与版本信息,可以通过在编译时动态添加这些信息到可执行文件中,运行后即可查看。以下是完整的攻略。 第一步:定义版本信息 在项目的主程序中,定义一个常量来保存版本信息和生成时间。版本信息可以格式化成字符串,并随着时间一起更新。 const ( Version = "1.0" BuildTime = "2019…

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