警告:C4018 "<":有符号/无符号不匹配

for (i = 0; i<(strlen(arr1)+1)/2; i++)

只需将循环中的"i"在定义时定义为无符号即可,即unsigned i;

产生错误的代码:

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

int main()
{
 char arr1[] = { "Welcome to bit!" };
 int num = strlen(arr1);
 unsigned i;
 char arr2[20] = {"***************"};

 printf("%s\n", arr2);
 for (i = 0; i<(strlen(arr1)+1)/2; i++)
 {
  arr2[i] = arr1[i];
  arr2[strlen(arr1) - i - 1] = arr1[strlen(arr1) - i - 1];
  printf("%s\n",arr2);
 }
 system("pause");
 return 0;
}
时间: 2024-10-24 03:49:54

警告:C4018 "<":有符号/无符号不匹配的相关文章

INT_MIN 写成 (-2147483647 - 1) 和 vs中 warning C4018: “&gt;”: 有符号/无符号不匹配的深入剖析。

首先明确下4个字节的INT能表示的数字范围是2147483647-- -2147483648,来看我遇到的问题: 这里输出了"相等"说明 (INT_MIN==-2147483648) 为true. 输出了" 1<-2147483648",说明认为 (1<-2147483648) 为true,但是这不科学. 输出了"-1>2147483648"说明 ( -1>2147483648) 为true,这也不科学. INT_MIN和

C语言 宏判断有符号无符号 整型变量

#define ISUNSIGNED(x) ((x)>=0&&~(x)>=0) #define ISSINGNED(x) ((x)>=0?((~(x))<0?true:false):true) 有符号与无符号的区别:最高位是否为1  ,有符号最高位为1表示负数.

汇编中的有符号-无符号-溢出-进位

什么是有符号数?什么是无符号数?什么是溢出(OF)?什么是进位(CF)?如何区分有无符号 呢?有符号数,就是带符号的数,可以是正数或负数.区分正数或负数时,看这个数的最高位是 否为 1,最高位为 1,说明它是负数.最高为 0 说明它是正数.例如一个字节有符号数,表示范围(-128 ~ 127):A0 :1010 0000 : -96 最高位为 1,说明是负数 80 :1000 0000 :-128 最高位为 1,说明是负数 5B :0101 1011 : 91 最高位位 0,说明它是正数 09

有符号数、无符号树混合计算问题。

今天在线刷题,其中一个问题总是结果跟期望的不一样,在一次次的检查程序逻辑.确认无误后,还是不能通过,不得已用VS开始调试! 这里是我的程序代码: 1 // maxDepth.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include<vector> 6 #include<iostream> 7 #include<limits.h> 8 9 using namespace std; 10 1

【VHDL】深度讲解无符号和有符号加法处理溢出的问题

1.Unsigned adders 这个比较简单,只需在A.B前面扩展一位0防止溢出,溢出的数填到第n位cout,n-1到0位就是sum. , 2.Signed adders 一开始也搞不懂下图中为什么要扩展符号位,两个符号位了怎么加?   往下看↓ 2.1 Analysis 在真正开始使用Verilog做signed加法运算前,我们先来看看实际上二进制singed加法是如何运算? Normal Condition (没有Overflow) (+6) + (-3) = (+3) 为了节省reso

C语言 有符号、无符号

C语言 有符号.无符号 有符号无符号说明 一.有符号 signed char 8bit 取值范围:-2^7 ~ 2^7-1 . -128~127 int 32bit 取值范围:-2^31 ~ 2^31-1 . -2147483648~2147483647 long long 64bit 取值范围:-2^63 ~ 2^63-1 #include <stdio.h> int main() { signed int a = -1089474374; //定义有符号整型变量a printf("

0阶 无符号指数哥伦布编码

指数哥伦布编码与哈夫曼编码一样都属于变长编码 但二者也有显著的区别: 1>信源相关性: 哈夫曼编码依赖于信源的概率分布,而指数哥伦布编码与信源无关 2>额外信息: 哈夫曼编码必须携带与该信源匹配的码表,指数哥伦布编码无需携带额外信息 h264官方协议文档中定义了4类指数哥伦布编码分为: ue(v)无符号指数哥伦布编码 .se(v)有符号指数哥伦布编码. te(v)截断指数哥伦布编码 和 me(v)映射指数哥伦布编码 下面我们截取了协议文档中 ue(v)无符号指数哥伦布编码的部分作为例子来分析,

c语言中无符号和有符号之间的运算

关于计算机中有符号,无符号数值的表示以及它们之间的运算 是基本知识,但工作这么多年也不敢说完全搞明白透彻. 这几天在将知识点进行了一些梳理,并做了一些有意思的试验. 计算机中,数值的表示和运算都是用补码表示的. 正数的补码就是其本身: 负数的补码则是最高符号位为1,其余位取反加1. 比如-5表示为0xFFFB, 而5则表示为0x0005. 这里,第一个需要注意的问题就是 有符号数和无符号数之间的运算. c语言规定,先一律转成无符号数,然后再进行运算. 比如,  int iValue1 = -5;

C#控制台基础 无符号二进制小数转换为十进制

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Co