关于VS2019以后版本,C6328/C4477 sizeof()报错问题

关于VS2019以后版本,C6328/C4477 sizeof()警告问题

在用sizeof查看占用字节数时,如下写法报了两条警告,如下:

	printf("int 类型占用的内存大小是:%d\n", sizeof(int));

在这里插入图片描述

经过查找网上的类似情况,网上大部分解决办法是强制转换类型。但我感觉这样做会有隐患,所以直接换一种写法。

并且这种情况似乎只出现在VS2019以后的编译器版本中,而使用DevC等远古编译器就不会报警告,所以并不像花费太多时间在这里。

解决办法:更换写法:

	int int_sizeof = sizeof(int);
	printf("short 类型占用的内存大小是:%d\n", int_sizeof);

相当先获取存储int所占用的字节数,再把它赋给 int_sizeof

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下采样是将图像的分辨率降低,可以通过对像素点进行平均或者隔行/列采样的方式实现。下面是在vs2019中用C语言对灰度图像进行1/4下采样的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define WIDTH 640 // 图像宽度 #define HEIGHT 480 // 图像高度 #define FACTOR 4 // 采样因子 int main() { // 读入灰度图像 FILE* fp = fopen("lena_gray.raw", "rb"); unsigned char* img = (unsigned char*)malloc(WIDTH * HEIGHT * sizeof(unsigned char)); fread(img, sizeof(unsigned char), WIDTH * HEIGHT, fp); fclose(fp); // 1/4下采样 int new_w = WIDTH / FACTOR; int new_h = HEIGHT / FACTOR; unsigned char* new_img = (unsigned char*)malloc(new_w * new_h * sizeof(unsigned char)); for (int i = 0; i < new_h; i++) { for (int j = 0; j < new_w; j++) { int sum = 0; for (int k = 0; k < FACTOR; k++) { for (int l = 0; l < FACTOR; l++) { sum += img[(i * FACTOR + k) * WIDTH + (j * FACTOR + l)]; } } new_img[i * new_w + j] = sum / (FACTOR * FACTOR); } } // 保存下采样后的图像 fp = fopen("lena_gray_downsampled.raw", "wb"); fwrite(new_img, sizeof(unsigned char), new_w * new_h, fp); fclose(fp); // 释放内存 free(img); free(new_img); return 0; } ``` 在上述代码中,我们先读入灰度图像,然后对图像进行1/4下采样,最后保存下采样后的图像。具体来说,我们遍历新图像的每个像素,计算其在原图像中对应的像素的平均值,作为新图像中该像素的值。最后,我们释放内存,程序结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值