spark = sparkSession.newSession()
为什么输入给定1 2给出输出10而输入1:2给出输出12。
答案 0 :(得分:0)
根据您的描述运行不同的代码示例之后。我发现,scanf("%d :%d")
将侦听用户的输入,并且将提供的(value1:value2)
类型为:
的输入用作分隔符。而如果您不提供带有:
的输入,它将仅选择初始值,并将GARBAGE
的值分配给后面的值。
您可以使用诸如/
之类的不同字符来代替:
,并且它将以相同的方式工作。
答案 1 :(得分:0)
scanf
仅在输入与提供的格式匹配时才读入(并分配)。所有其他参数(即不匹配的参数)保持不变。 scanf
的返回值是匹配(并被分配)的项目数。
为说明这一点,请参见以下程序。我正在使用sscanf
并以字符串而不是用户输入的形式传递参数;但是结果与您使用scanf
并在控制台中输入值的结果相同:
int main()
{
int n=0,m=0;
int itemsScanned = 0;
itemsScanned = sscanf("1:2","%d : %d",&n,&m);
std::cout << "items scanned: " << itemsScanned << "; n: " << n << "; m: " << m << std::endl;
n=0;m=0; // reset...
itemsScanned = sscanf("1 2","%d : %d",&n,&m);
std::cout << "items scanned: " << itemsScanned << "; n: " << n << "; m: " << m << std::endl;
}
输出:
items scanned: 2; n: 1; m: 2
items scanned: 1; n: 1; m: 0