C语言中交换int型变量的值及转换为字符数组的方法

不使用其他变量交换两个整型的值:

#include <stdio.h> 

void main(){
  int a = 3;
  int b = 4; 

  a = a ^ b;//使用异或交换
  b = b ^ a;
  a = a ^ b; 

  printf("%d, %d\n", a, b); 

  a = a - b;//使用加减交换
  b = a + b;
  a = b - a; 

  printf("%d, %d\n", a, b); 

  a ^= b ^= a ^= b; 

  printf("%d, %d\n", a, b);
}

整形和字符数组型转换:

#include <stdio.h>
#include <stdlib.h> 

int sumof1(int x)//求一个数转换成二进制以后1的个数
{
  int countx = 0;
  while(x)
  {
    countx ++;
    x &= x-1; //每位与一次x - 1;就能消掉最后一个1
  }
  return countx;
} 

void main(){ 

  char c[10];
  int i = 999; 

  itoa(i, c, 10);//以10进制转换成字符数组
  puts(c); 

  itoa(i, c, 16);//以16进制转换成字符数组
  printf("0x%s\n", c); 

  itoa(i, c, 8);//以8进制转换成字符数组
  printf("0%s\n", c); 

  itoa(i, c, 2);//以2进制转换成字符数组
  puts(c); 

  i = atoi(c);//再将字符串转成整形
  printf("%d\n", i); 

  printf("%d\n", sumof1(i));//以2进制表示时1的个数
}

(0)

相关推荐

  • C语言基础知识变量的作用域和存储方式详细介绍

    变量的作用域和存储方式 1.简述变量按作用域的分类 变量按作用域分:分为全局变量和局部变量 全局变量:在所有函数外部定义的变量叫做全局变量 全局变量的使用范围:从定义位置开始到下面整个程序结束 局部变量:在一个函数内部定义的变量或者函数的形式参数统称为局部变量 局部变量的使用范围:在函数内部定义的变量只能在本函数内部进行使用 2.简述变量按存储方式的分类 静态变量 自动变量 寄存器变量[寄存器就是cpu内部可以存储数据的一些硬件东西] 3.简述全局变量和局部变量命名冲突的问题 1>在一个函数内部

  • C语言变量类型的深入分析

    C语言是强类型语言,定义变量时必须声明变量的类型,赋值的时候也只能是同种类型变量赋值. 一.变量的类型告诉编译器怎么处理这个变量的数据. 虽然c语言是强类型语言,但是不同类型的变量通过类型转换也可以赋值,甚至指针变量可以转化为int类型,转化为char类型.从本质上来说,变量类型只是告诉编译器应该怎么处理这个变量,所以不同变量可以通过显示类型转换来赋值.理解这点对我们理解指针的转型非常重要.例如 int a = 10; int **ptr = &a; int b = (int)(*ptr); /

  • C语言中变量与其内存地址对应的入门知识简单讲解

    先来理解理解内存空间吧.请看下图: 如上图所示,内存只不过是一个存放数据的空间,就好像我的看电影时的电影院中的座位一样.电影院中的每个座位都要编号,而我们的内存要存放各种各样的数据,当然我们要知道我们的这些数据存放在什么位置吧.所以内存也要象座位一样进行编号了,这就是我们所说的内存编址.座位可以是遵循"一个座位对应一个号码"的原则,从"第1号"开始编号.而内存则是按一个字节接着一个字节的次序进行编址,如上图所示.每个字节都有个编号,我们称之为内存地址.好了,我说了这

  • C语言中结构体偏移及结构体成员变量访问方式的问题讨论

    c语言结构体偏移 示例1 我们先来定义一下需求: 已知结构体类型定义如下: struct node_t{ char a; int b; int c; }; 且结构体1Byte对齐 #pragma pack(1) 求: 结构体struct node_t中成员变量c的偏移. 注:这里的偏移量指的是相对于结构体起始位置的偏移量. 看到这个问题的时候,我相信不同的人脑中浮现的解决方法可能会有所差异,下面我们分析以下几种可能的解法: 方法1 如果你对c语言的库函数比较熟悉的话,那么你第一个想到的肯定是of

  • C语言 常量,变量及数据详细介绍

    一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储在硬盘上,电脑关机重启后依然存在. ②. 动态数据:程序运行过程中,动态产生的的临时数据,一般存储在内存中,内存的存储空间一般较小,计算机关闭后这些数据就会被清除.软件或者电脑关闭则这些临时数据会被清除. ③. 静态数据和动态数据可以转换. ④. 注意:为什么不把动态数据存放到硬盘?因为直接访问内存

  • 深入探讨C语言中局部变量与全局变量在内存中的存放位置

    C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register) 1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放.这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了.这种变量有效性的范围称变量的作用域.不仅对于形参变量,C语言中所有的量都有自己的作用域.变量说明的方式不同,其作用域也不同.C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量.1.1局部变量局部变量也称为内部变量

  • C语言 指针变量作为函数参数详解

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁. 像数组.字符串.动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合. 有的时候,对于整数.小数.字符等基本类型数据的操作也必须要借助指针,一个典型的例子就是交换两个变量的值. 有些初学者可能会使用

  • C语言中交换int型变量的值及转换为字符数组的方法

    不使用其他变量交换两个整型的值: #include <stdio.h> void main(){ int a = 3; int b = 4; a = a ^ b;//使用异或交换 b = b ^ a; a = a ^ b; printf("%d, %d\n", a, b); a = a - b;//使用加减交换 b = a + b; a = b - a; printf("%d, %d\n", a, b); a ^= b ^= a ^= b; printf

  • pandas 取出表中一列数据所有的值并转换为array类型的方法

    如下所示: # -*-coding: utf-8 -*- import pandas as pd #读取csv文件 df=pd.read_csv('A_2+20+DoW+VC.csv') #求'ave_time'的平均值 aveTime=df['ave_time'].mean() #把ave_time这列的缺失值进进行填充,填充的方法是按这一列的平均值进行填充 df2=df.fillna(aveTime) #取表中的第3列的所有值 col=df2.iloc[:,2] #取表中的第3列的所有值 a

  • python交换两个变量的值方法

    大部分语言,例如c语言,交换两个变量的值需要使用中间变量. 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的交换 (a,b) = (b,a) 对于它的交换原理我深感好奇,因为这意味着python解释器很有可能做了件更多的工作. 如果说变量可以直接交换,那么列表的元素呢? lists[i], lists[j] =lists[j], lists[i] 是否可以实现列表i,j元素的互换,如果可以实现,原理是什么? 可以实现交换,至于原理,可以用

  • 用32位int型变量表示单引号括起来的四个字符的深入探讨

    在C.C++中可以用32位int型变量表示单引号括起来的四个字符,例如下面代码中的示例: 复制代码 代码如下: // 字符c的16进制值是0x63,字符o的16进制值是0x6f, // 字符n的16进制值是0x6e int what = 'conn'; printf("The address of what is 0x%x \n", &what); printf("what 0x%x \n", what); if (what == 0x636f6e6e) {

  • 详解Go语言中的作用域和变量隐藏

    目录 前言 包隐藏 全局变量 类型强制 闭包 := 的情况 总结 前言 变量隐藏在 Go 中可能会令人困惑,让我们尝试弄清楚. package main import ( "fmt" "io/ioutil" "log" ) func main() { f, err := ioutil.TempFile("", "") if err != nil { log.Fatal(err) } defer f.Clos

  • Python实现在一行中交换两个变量

    我们已经讨论了在没有临时变量的情况下交换两个整数的不同方法.如何在不使用库函数的情况下换成一行? 1) Python: 在Python中,有一个简单且语法简洁的结构来交换变量,我们只需要写“x, y = y, x”. 2)C/C++: 下面是一个普遍提供的经典解决方案: // 使用按位异或交换(C/C++ 中的错误解决方案) x ^= y ^= x ^= y; 上述解决方案在 C/C++ 中是错误的,因为它会导致未定义的行为(编译器可以自由地以任何方式运行).原因是,如果修改之间没有序列点,则在

  • C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解

    初学者在学习C语言的时候,最头疼的可能就是指针,话不多说.让我们直接进入正题 直接上代码 int main(void) { int *p = 0; printf("%d", *p); system("pause"); return 0; } 直接运行,好了,程序是不是报错了?那就对了.因为此时的int *p=0实际等于int *p; p=0; 让我们来验证一下对不对 int main(void) { int *p = 0; printf("%d"

  • PHP不用第三变量交换2个变量的值的解决方法

    以前做过一道php面试题是这样的:不使用第三个变量实现交换两个变量的值.一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了.网上找到的几种方法总结如下: 复制代码 代码如下: //字符串版本 结合使用substr,strlen两个方法实现$a="a";$b="b";echo '交换前 $a:'.$a.',$b:'.$b.'<br />';$a.=$b;$b=substr($a,0,(s

  • javascript中使用未定义变量或值的情况分析

    本文实例讲述了javascript中使用未定义变量或值的情况.分享给大家供大家参考,具体如下: javascript里面一般不能使用未定义的值,但是下面几种情况除外: 1. 赋值语句中: a=9; alert(a) //9 赋值语句中需要赋值的变量没定义会先定义,再赋值.另外从 a=b=c=8 不报错可以看出赋值语句是从右向左执行的. 2. for in语句中: for(key in {name:'goofy'}){ alert(key) //"name" } alert(key) /

  • Python3之不使用第三方变量,实现交换两个变量的值

    method 1: a,b = b,a method 2: a = a+b b = a-b a = a-b 以上这篇Python3之不使用第三方变量,实现交换两个变量的值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐