Dev-C++中stdio.h对long long的兼容问题

使用stdio.h的代码:

#include<stdio.h>
int main()
{
    long long n,s;
    scanf("%lld",&n);
    s=n*(n+1)*(2*n+1)/6;
    printf("%lld",s);
    return 0;
}

运行结果:

2
-715827878
--------------------------------
Process exited after 1.664 seconds with return value 0
请按任意键继续. . .

使用cstdio的代码:

#include<cstdio>
int main()
{
    long long n,s;
    scanf("%lld",&n);
    s=n*(n+1)*(2*n+1)/6;
    printf("%lld",s);
    return 0;
}

运行结果:

2

5
--------------------------------
Process exited after 1.259 seconds with return value 0
请按任意键继续. . .

但将long long改为long就正常了。

从资料中可以查阅到, long long是在C++11被正式加入的, 此前其只在C99中可用, 所以使用旧版的头文件就可能出错。

结论:在c++中使用stdio.h时要注意long long的兼容问题。

时间: 2024-10-11 11:50:28

Dev-C++中stdio.h对long long的兼容问题的相关文章

C++中vector小学习,顺便查了下&lt;stdio.h&gt;(或&lt;cstdio&gt;)

今天看书,邻桌在看<C++ Primer>,拿过来看了一会儿.以前比较少用vector容器,看了下后,瞬间觉得好腻害的样子,就想试一下.嗯,就是试一下而已.(代码可能网上都差不多,有参考) #include<iostream> #include<vector> //使用vector容器 #include<string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector<

Turbo C 编程中“Unable to open include file &#39;stdio.h&#39;”问题的解决

问题: 初学Turbo C,不知道为什么,每次写完一个程序要编译的时候,总出现Error: c:/**/**.c   Unable to open include file 'stdio.h'  为什么每次都打不开“stdio.h"呢?我看过了,它在Include文件下,好好的呀.也试过把下载并安装的其它的TurboC的Stdio.h文件 复制过来,还是没用... 解决方法: include <stdio.h>表示搜索stdio.h这个文件的路径在option中指定的位置 inclu

C语言文件操作(3) --- stdio.h中其他有关文件操作的函数

本篇文章会讲述一些其他有关文件操作的函数,相比前两篇文章介绍的函数,有些可能不大常用. 1. feof()函数 ·原型: int feof (FILE *stream); ·使用方法:检测"流"上的文件结束符EOF,如果检测得到,则返回一个非零值,否则返回0. ·例子(将一个文件的文本内容复制到另一个文件): #include<stdio.h> int main(void) {     FILE* input = fopen("D:\\abc.in", 

GNU Linux 64位系统中fatal error: stdio.h: 没有那个文件或目录的错误的解决方法

在64位系统中,编写一个C语言程序后,使用gcc进行编译时,出现了如下的错误: test.c:1:19: fatal  error: stdio.h: 没有那个文件或目录 #include <stdio.h> 针对以上的情况,对于在32环境下一般不会出现这个问题,因为已经把libc的头文件包括在系统中了,那么针对这样的情况,主要检查是否安装了完备的开发环境: build-essential package - Installs the following collection to compi

头文件&lt;stdio.h&gt;

头文件<stdio.h>声明了三种类型,一些宏和很多执行输入输出的函数.1.类型:FILE 它是一个对象类型,可以记录控制流需要的所有信息,包括它的文件定位符.指向相关的缓冲的指针.记录是否发生了读/写错误的错误指示符和记录文件是否结束的文件结束符.fpos_t 它是一个对象类型,可以唯一指定文件中的每一个位置所需的所有信息.size_t 这是无符号整数类型,它是sizeof关键字的结果.2.宏:NULL 这个宏是一个空指针常量的值._IOFBF._IOLBF.IONBF 这些宏扩展了带有特定

解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置

转载自:http://blog.csdn.net/carl_qi/article/details/51171280 今天突然想在windows上装个 VS2015 玩玩,结果遇到了如下bug: 安装完 VS2015 后,直接新建项目->win32控制台->运行,结果报错! "无法打开包括文件: “stdio.h”: No such file or directory” "lnk1104:无法打开文件 ucrtd.lib ” 奇了怪了,stdio.h 和 ucrtd.lib

nagios报错:./stdio.h:456:1: error: &#39;gets&#39; undeclared here (not in a function)

[[email protected] nagios-plugins-1.4.16]# ./configure [[email protected] nagios-plugins-1.4.16]# make  mv -f .deps/full-write.Tpo .deps/full-write.Po gcc -DHAVE_CONFIG_H -I. -I..  -I../intl   -g -O2 -MT localcharset.o -MD -MP -MF .deps/localcharset.

getchar()&amp;putchar()&amp;stdio.h

getchar():从stdio流中读字符. eof(end of file):文件结束符,在while循环中以eof作为文件结束标志.可以是文件(file),这种以EOF作为文件结束标志的文件必须是文本文件,在文本本件中,数据都是以字符的 ASCII代码值的形式存放,我们知道ASCII代码值的范围0-255,不可能出现-1,因此可以用EOF作为文件结束标志:也可以是标准输入(stdin).EOF是一个定义在stdio.h的常量,一般等于-1.在linux系统中,EOF根本不是一个字符,而是当系

解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题

今天突然想在windows上装个 VS2015 玩玩,结果遇到了如下bug:安装完 VS2015 后,直接新建项目->win32控制台->运行,结果报错!"无法打开包括文件: "stdio.h": No such file or directory""lnk1104:无法打开文件 ucrtd.lib "奇了怪了,stdio.h 和 ucrtd.lib 都是 VS 自带的头文件和库文件,都无法识别,所以第一反应就是这个头文件和库文件的目