使用c语言编写程序:不允许创建第三方变量

深入理解异或运算实例

    一.代码实现

    
    #include<stdio.h>
    
    int main()
    {
    	int a = 10;
    	int b = 12;
    	a = a^b;
    	b = a^b;
    	a = a^b;
    	printf("%d %d",a,b);
    	system("pause");
    	return 0;
    }

二.异或性质

    每一个元素就是它自身的加法逆元(a^a = 0)

    三.汇编分析

    

1.取出a和b的值

    2.将a的值放在eax中,将b与eax异或处理,将a的值保存起来。

    3.将a的值放在eax中,将b与eax异或处理,将b的值保存起来。

    4.将a的值放在eax中,将b与eax异或处理,将a的值保存起来。

 运用了a^a = 0;的概念;



时间: 2024-10-13 11:25:48

使用c语言编写程序:不允许创建第三方变量的相关文章

【C语言】实现一个函数求字符串长度(不能创建第三方变量)

//实现一个函数求字符串长度(不能创建第三方变量) #include <stdio.h> #include <assert.h> int my_strlen(const char *p) { assert(p); if (*p == '\0') return 0; else return 1 + my_strlen(++p); } int main() { char *p = "abcdefg"; printf("%d\n", my_strl

【c语言】实现一个函数,求字符串的长度,不允许创建第三方变量

// 实现一个函数,求字符串的长度,不允许创建第三方变量. #include <stdio.h> #include <assert.h> int my_strlen_no(char const *p) { assert(p != NULL); if (*p == NULL) return 0; else return (1 + my_strlen_no(p + 1)); } int main() { char *p = "zhaoyaqian"; printf(

使用C语言编写程序,求解有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个序列的前20项

void test() {  //思路:找规律->从3/2开始 下一个数的分母是上一个数的分子,下一个数的分子是上一个数的分子分母之和  double mol = 2.0, den = 1.0, denlast = 0;  double div = mol / den;  double sum = 0;  int i = 0;  for (i = 0; i < 20; i++)  {   printf("%g/%g ", mol, den);//%g省去浮点数的无效0   

利用c语言编写程序输出一个数的每一位(多种方法)

第一种: #include <stdio.h> int main() { int zheng,i; int m=0; int yu[10]; int count=0; scanf("%d",&m); zheng=m; for(i=0;i<10;i++) if (zheng!=0) { yu[i]=zheng%10; zheng=zheng/10; count++; } for(i=0;i<count;i++) { printf("%d &quo

cp&amp;tar&amp;用c语言编写程序 实现cp命令的效果

1.cp (拷贝) 已存在文件路径  要拷贝的文件路径 实现cp命令的代码如下: 2 #include <stdio.h> 3 4 //因为要在命令中得到两个路径,所以要用到main函数的两个参数 5 int main(int argc,char **argv){ 6 7 char buf[100]={0}; 8 9 int size=0; 10 /* int buf[100]={0} ; 代表数组里的单个存储区占四个字节. 如果我们从原始文件> 里拿出来的数据是3个字节,那么就放不进去

不创建第三方变量对整型数组逆置

以整型数组为例实现逆置 将一个整型数组逆序,如:数组a[5]={1,2,3,4,5},逆序之后数组a的内容变成{5,4,3,2,1}. void SwapNum(int& a, int& b) {  a = a^b;  b = a^b;  a = a^b; } void SwapArray(int *str,int size) {  int i = 0;  for (i = 0; i < size / 2; i++)  {   SwapNum(str[i], str[size - i

不创建第三方变量求字符串长度

#include <stdio.h> int my_strlen(char const *p) { if(*p == '\0') return 0; else { return 1 + my_strlen(p + 1); } } int main() { char *p = "yangrujing"; int ret = my_strlen(p); printf("%d\n",ret); return 0; }

swift语言 编写 ios开发 第一个程序hello world!

老实说:第一个swift语句的ios不是代码敲出来的,我甚至还没来得急看代码,hello world 就出来了..... 本人开发环境:mac osx 10.10 dp1 + xcode6 beta + swift(更低xcode不支持swift语言) 思路与大致过程: 1.建立工程,工程包含界面文件,代码文件等等 2.在工程的界面文件中加入text控件,用于显示hello world 3.输入hello world ,模拟运行 让我们一步一步来: 1.建立工程,工程包含界面文件,代码文件等等

在安卓手机上学习C语言 - 安卓手机C/C++编译环境的搭建 : 程序世界的创建

   在安卓手机上学习C语言           安卓手机C/C++编译环境的搭建 : 程序世界的创建 在电脑上运行的QQ,手机上的QQ都是程序, 这些通电就能用的神奇玩意, 如果我说它们都是程序员用一个一个英文字母,数字,奇奇怪怪的符号创造出来的,我想那些没有任何概念的朋友可能会感到惊讶. 是的, 在没有揭开程序世界的神秘面纱之前, 一切都是那么神奇. 实际上, 程序确实是用一个一个英文字母(或者说拼音字母...)来写出来的, 就和写小说一样写出来的. 但是并不是写完之后把写出来的内容保存到一