关于C#不同位数相与或,或赋值时,隐藏位数扩展该留意的问题

__int64 a;

char b;

a = b;

a |= b;

如上情况,当b的最高位为1时,即b=0x80(或更大)时,b在扩展成64过程中会将最高位向高位扩展变成0xffffffffffffff80(或更大),

此时改成a = b&0xff        a = (a | b)&0xff

可避免该情况

时间: 2024-10-18 15:06:28

关于C#不同位数相与或,或赋值时,隐藏位数扩展该留意的问题的相关文章

谭浩强 c程序设计 8.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串"486"。n的位数不确定,可以是任意位数的整数。

8.17用递归法将一个整数n转换成字符串.例如,输入486,应输出字符串"486".n的位数不确定,可以是任意位数的整数. #include <stdio.h> char str1[20];int i=0;long n;int main(){        int longToStr(long n);    char *revstr(char *str, int len);    printf("请输入一个整数n:\n");    scanf("

【JavaScript基础】在写冒泡排序时遇到的JavaScript基础问题:JavaScript的数据类型和变量赋值时的原理

写冒泡排序时,遇到一个问题: function bubbleSort(arr){ var temp = 0; console.log("传入的数组:"); console.log(arr); for(var i = 0;i<arr.length;i++){ //循环arr.length-1次 console.log("外层第"+i+"次循环===============start"); for(var j = 0;j<arr.leng

功能:赋值时类型自动的转换

#include<stdio.h> main() { int a,x; float f; a=3.9; f=12; x='A'; printf("a=%d,f=%f,x=%d\n",a,f,x); } 功能:赋值时类型自动的转换,布布扣,bubuko.com

C/C++ 错误笔记-在给结构体中的指针赋值时,要注意该指针是否已指向内存空间

先来看下面的例子: #include <stdlib.h> #include <string.h> #include <stdio.h> #pragma warning(disable:4996) typedef struct _Student { char name[64]; int age; }Student; typedef struct _Teacher { char name[64]; int age; char *p1; char **p2; Student

MYSQL 表中汉字写入或字段赋值时乱码情况排误

-- 当修改字段值,或是直接写入时,汉字变成乱码情况 ,[可注意一下数据库名,记得修改] -- 当字符顺序对汉字不兼容时,可能直接导致乱码情况发生. 最好做到库.表.字段(字符类型)排序规则是否一致 -- eg.在某库下建了临时表没有指定字符排序规则,下游会使用时,将临时表中的str字段值赋值给另外一个库表,可能会出现乱码 -- 未指定排序建表时,则表的排序规则是其库的排序规则 -- 1. 库级别 SELECT * -- DEFAULT_CHARACTER_SET_NAME DEFAULT_CO

C/C++,Java,PHP,JavaScript,Json数组、对象赋值时,最后一个元素后面是否可以带逗号?

1 C,C++,Java,PHP都能容忍末尾的逗号 C,C++,Java中对数组赋值时,最后一个元素末尾的逗号可有可无.下面两行代码对这些语言来说是等效的. int a[] = {1,2,3}; /* 正确 */ int a[] = {1,2,3,}; /* 正确 */ PHP这一点也继承了C的特点,下面的两行代码等效. $a = array(1,2,3); /* 正确 */ $a = array(1,2,3,); /* 正确 */ 2 JavaScript视末尾逗号为语法错误! 然而到了Jav

FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时遇到的坑,给textview赋值时出现的空指针异常

FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时,给textview赋值时出现的空指针异常 public class BaseFragment extends Fragment { /*布局*/ private View view; /**/ boolean isVisible = false; @Nullable @Override public View onCreateView(LayoutInflater inflat

初始化赋值时a = b = 常数 的易犯错误

1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int a,b; a=b=2; //成功 6 //int a = b = 2;失败 7 printf("%d %d",a,b); 8 system("pause"); 9 return 0; 10 } 新手注意直接初始化变量的 int a = b = 2这样的写法会导致编译失败. 如何能让这个语句正确呢,那就在前面声明好

初学者常见错误1——赋值时的类型转换

猜测下面程序的输出结果,并上机尝试: 1. #include<stdio.h> #include<math.h> int main() { printf("%d",pow(5,2)); } 2. #include<stdio.h> #include<math.h> int main() { printf("%f",pow(5,2)); } 3. #include<stdio.h> #include<m

bash 脚本编程 利用 “=” 赋值时,左右不能留空格

对脚本变量用“=”赋值时, "=" 左右不能留有空格,否则会提示错误. 比如以下例子: #!/bin/bash BEGIN_TIME = `date +%H:%M:%S` ./a.out END_TIME = `date+%H:%M:%S` echo "程序开始时系统时间为" echo "$BEGIN_TIME" echo "程序结束时系统时间为" echo "$END_TIME" 在将系统时间分别赋值给