int main() {
char letra = 'B';
int numero = 10;
float virgulas = 10.5;
char casa = 'Esquina';
printf("%c \n",letra);
printf("%d \n",numero);
printf("%f \n",virgulas);
printf("Letra %c, numero %d, em uma %c\n", letra, numero, casa);
return 0;
}
当我运行我的代码时," Esquina"每次都显示为随机数。
答案 0 :(得分:3)
<DataGrid
ItemsSource="{Binding MasksSourceListBound.MaskDetails}"
>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding OtherTestProperty}" />
<DataGridComboBoxColumn
Header="Test"
SelectedItemBinding="{Binding SelectedItem}"
>
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter
Property="ItemsSource"
Value="{Binding DataContext.MasksSourceListBound.ListParts, RelativeSource={RelativeSource AncestorType=DataGrid}, PresentationTraceSources.TraceLevel=High}"
/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding DataContext.MasksSourceListBound.ListParts, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
是一个字符串。您需要将其存储在"Esquina"
(而不是char*
中 - 大多数现代编译器应该对此错误发出错误):
char
然后,您可以使用char* casa = "Esquina";
格式化程序(而非%s
)将其打印出来:
%c
答案 1 :(得分:2)
首先,一些基础知识:
在C中,字符串是一系列字符值,后跟一个0值终结符。字符串存储在char
的数组中,而不是单个char
个对象中。
字符串文字由双引号("
)分隔,而字符常量由单引号('
)分隔。
在您的代码中
char casa = 'Esquina';
您将casa
声明为char
,这意味着它只能存储单个字符值,而不能存储字符串。您使用'Esquina'
初始化它,它不是字符串文字,而是多字节字符常量。多字节字符常量以实现定义的方式映射到char
个对象。在这种特殊情况下,它不是你想要的。
casa
应声明为
const char *casa = "Esquina";
或
char casa[] = "Esquina";
取决于您以后是否需要修改字符串的内容。第一个版本将casa
声明为指向字符串文字 "Esquina"
1 中第一个字符的指针。第二个版本将casa
声明为char
2 的8个元素数组,并将字符串文字的内容复制到它,为我们提供
casa[0] == 'E'
casa[1] == 's'
casa[2] == 'q'
casa[3] == 'u'
casa[4] == 'i'
casa[5] == 'n'
casa[6] == 'a'
casa[7] == 0
要打印出来,您可以使用%s
中的printf
转换说明符:
printf("Letra %c, numero %d, em uma %s\n", letra, numero, casa);
<小时/>
char
的数组,以便在程序启动时分配数组,并在程序终止时释放。尝试修改字符串文字的内容会调用未定义的行为 - 它可能会起作用,它可能会导致段错误,它可能会发生意外情况。为了防止我们通过casa
意外修改字符串文字,我们将其声明为const char *
;这样,任何改变字符串的尝试都会导致编译器牦牛