我是C++的新手,我正在尝试编写一个非常基本的程序,但我遇到了初始化整数的问题.我把它剥离到一个仍然存在问题的非常小的程序:
#include <iostream>
using namespace std;
int main()
{
cout << "Please enter your age\n";
int age = -1;
cin >> age;
cout <<"\n\n Your age is " << age << "\n\n";
}
Run Code Online (Sandbox Code Playgroud)
我看了,如果我尝试输入一个字符串,例如abc在age变量,然后输入要失败和值应单独留在家中,因此它应该打印Your age is -1.
但是,当我运行此程序并键入时abc,它会打印出来Your age is 0.为什么?
只是好奇为什么C++标准库使用小写和下划线代替camelCase或PascalCase命名约定.
就个人而言,我发现后者在输入代码时更容易处理,但有没有合理的理由使用前者?
如何更改颜色,字体大小和其他功能如何更改谷歌colab中的主题?我需要像Jupyter笔记本这样的黑暗主题.
Java中的'import'与C/C++中的'#include'的行为方式相同吗?具体来说,它是否包含它正在导入的整个库,还是只包含后续代码中调用的类和方法?
如何在Android Studio中以ZIP格式导出项目?
我一直在使用具有此功能的Eclipse.
我%p在Stack Overflow中已经阅读了很多关于C语言中格式说明符用法的答案,但似乎没有一个解释为什么void*所有类型都需要显式转换为char*.
我当然知道这样一个事实,即强制转换的要求void*与使用可变函数(参见本答案的第一条评论)有关,而非强制性要求.
这是一个例子:
int i;
printf ("%p", &i);
Run Code Online (Sandbox Code Playgroud)
产生关于类型不兼容性的警告,并且&i应该进行铸造void*(根据标准的要求,再次参见此处).
虽然这一大块代码能够顺利编译,但没有关于类型转换的任何投诉:
char * m = "Hello";
printf ("%p", m);
Run Code Online (Sandbox Code Playgroud)
如何char*从这一要求中"解脱"?
PS:可能值得补充的是我在 x86_64架构上工作,因为指针类型大小依赖于它,并且使用 gcc作为linux上的-W -Wall -std=c11 -pedantic编译器和编译选项.
如何以编程方式返回的最大两个整数,而无需使用任何比较运营商和不使用if,else等等?
我有输入如"(50.1003781N, 14.3925125E)".这些是纬度和经度.
我想解析这个
sscanf(string,"(%lf%c, %lf%c)",&a,&b,&c,&d);
Run Code Online (Sandbox Code Playgroud)
但是当%lf看到E数字后,它会消耗它并以指数形式将其存储为数字.有没有办法禁用它?
情况1:
void hello(void) {
//something
}
int main()
{
hello(1); //error
return 0;
}
Run Code Online (Sandbox Code Playgroud)
案例2:
int main(void) {
//something
return 0;
}
Run Code Online (Sandbox Code Playgroud)
执行:
./a.out something something //No error, Why?
Run Code Online (Sandbox Code Playgroud)
为什么没有错误?main将无法采取任何论点.那么为什么可以从命令行提供参数呢?
我想printf()用动态参数控制函数输出格式,如下面的代码所示:
#include<stdio.h>
int main(int argc,char ** argv)
{
printf(argv[1],"hello,world");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我编译并运行它:
$ gcc -o test test.c
$ ./test "\t%s\n"
Run Code Online (Sandbox Code Playgroud)
结果很奇怪:
\thello,world\n$
Run Code Online (Sandbox Code Playgroud)
为什么"\n"而且"\t"没有效果?