<!DOCTYPE html>
	<html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
	<head>
<title>&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu</title>
<meta name="description" content="&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;tinhocdct.xyz&#x002F;savefile&#x002F;hoat-dong-chuyen-mon&#x002F;c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html">
<meta name="author" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG">
<meta name="copyright" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG [webmaster@tinhocdct.xyz]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;tinhocdct.xyz&#x002F;savefile&#x002F;hoat-dong-chuyen-mon&#x002F;c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html">
<meta property="og:site_name" content="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG">
<meta property="og:url" content="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html">
<link rel="shortcut icon" href="https://tinhocdct.xyz/favicon.ico">
<link rel="canonical" href="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html">
<link rel="alternate" href="https://tinhocdct.xyz/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tin-tuc/" title="Tin Tức - TIN TỨC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/thong-cao-bao-chi/" title="Tin Tức - THÔNG BÁO" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/ban-tin-noi-bo/" title="Tin Tức - BẢN TIN NỘI BỘ" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tin-cong-nghe/" title="Tin Tức - CÔNG NGHỆ - KHOA HỌC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/thu-thuat/" title="Tin Tức - THỦ THUẬT" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tien-ich/" title="Tin Tức - TIỆN ÍCH" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/ai/" title="Tin Tức - AI" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/khoa-hoc/" title="Tin Tức - KHOA HỌC" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-chuyen-mon/" title="Tin Tức - HOẠT ĐỘNG CHUYÊN MÔN" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-cong-doan/" title="Tin Tức - CÔNG ĐOÀN" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/hoat-dong-doan-the/" title="Tin Tức - ĐOÀN THỂ" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tuyen-sinh-huong-nghiep/" title="Tin Tức - TUYỂN SINH - HƯỚNG NGHIỆP" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/tuyen-sinh-2025/" title="Tin Tức - TUYỂN SINH 2025" type="application/rss+xml">
<link rel="alternate" href="https://tinhocdct.xyz/rss/lich-cong-tac-tuan/" title="Tin Tức - Lịch công tác tuần" type="application/rss+xml">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/jquery/jquery.min.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/language/vi.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/assets/js/global.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/news.js">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/main.js">
<link rel="preload" as="script" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1816161148536198">
<link rel="preload" as="script" href="https://tinhocdct.xyz/themes/default/js/bootstrap.min.js">
<link rel="StyleSheet" href="https://tinhocdct.xyz/assets/css/font-awesome.min.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/bootstrap.non-responsive.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/style.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://tinhocdct.xyz/themes/default/css/news.css">
<style>
	body{background: #fff;}
</style>
	</head>
	<body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG</h2>
		<p class="pull-right"><a title="TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG" href="https://tinhocdct.xyz/">https://tinhocdct.xyz</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu</h1>
		<ul class="list-inline">
			<li>Thứ tư - 07/04/2021 01:06</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
			Khi lập trình, chúng ta cần phải sử dụng biến để lưu trữ dữ liệu của chương trình. Các biến được lưu trữ trên bộ nhớ của hệ thống - khi ta khai báo một biến trong chương trình, ta đang yêu cầu hệ thống trích ra một khoảng bộ nhớ để lưu trữ thông tin của biến đó.
		</div>
				<div class="imghome">
			<img alt="&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu" src="https://tinhocdct.xyz/uploads/news/2021_04/cpp-co-ban-1-3.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p><em>Phần trước:&nbsp;<a href="http://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-4-cu-phap-c-co-ban-96.html" target="_blank">&#91;C++ Cơ bản&#93; Phần 4: Cú pháp C++ cơ bản</a></em><br  />
C++ là ngôn ngữ đặt kiểu dữ liệu tĩnh (statically typed), có nghĩa là mỗi biến và hàm của chương trình đều có một kiểu dữ liệu cố định trong quá trình chạy chương trình. Kiểu dữ liệu quyết định kích thước bộ nhớ mà biến hoặc hàm chiếm trên hệ thống, khoảng giá trị mà biến hoặc hàm có thể biểu diễn, và những thao tác xử lý ta có thể thực hiện lên giá trị của chúng.</p>

<h1 id="các-kiểu-dữ-liệu-nguyên-thủy">Các kiểu dữ liệu nguyên thủy</h1>

<table>
	<tbody>
		<tr>
			<th>Kiểu dữ liệu</th>
			<th>Từ khóa</th>
		</tr>
		<tr>
			<td><b>Boolean</b><br  />
			Kiểu dữ liệu đúng sai (true/false)</td>
			<td><code>bool</code></td>
		</tr>
		<tr>
			<td><b>Character</b><br  />
			Kiểu kí tự</td>
			<td><code>char</code></td>
		</tr>
		<tr>
			<td><b>Integer</b><br  />
			Kiểu số nguyên</td>
			<td><code>int</code></td>
		</tr>
		<tr>
			<td><b>Floating point</b><br  />
			Kiểu số thực</td>
			<td><code>float</code></td>
		</tr>
		<tr>
			<td><b>Double floating point</b><br  />
			Kiểu số thực, với khoảng biểu diễn và độ chính xác cao hơn</td>
			<td><code>double</code></td>
		</tr>
		<tr>
			<td><b>Valueless</b><br  />
			Không trả giá trị gì về cả. Kiểu dữ liệu này thường thấy khi ta muốn tạo ra một chương trình con - một hàm chỉ thực hiện thao tác trên các đối tượng, mà không trả lại gì cả.</td>
			<td><code>void</code></td>
		</tr>
		<tr>
			<td><b>Wide character</b><br  />
			Kiểu kí tự, với khoảng biểu diễn rộng hơn</td>
			<td><code>wchar_t</code></td>
		</tr>
	</tbody>
</table>

<p>Một số kiểu dữ liệu nguyên thủy còn có thể được tùy chỉnh bằng các từ khóa:</p>

<ul>
	<li><code>signed</code>: Khi đặt trước các kiểu số, nó cho biết kiểu số này có dấu (khoảng giá trị bao gồm cả số âm). Thường vô dụng và không dùng tới.</li>
	<li><code>unsigned</code>: Khi đặt trước các kiểu số, nó cho biết kiểu số này không có dấu (chỉ bao gồm số không âm). Điều này làm tăng giá trị cực đại của khoảng biểu diễn lên.</li>
	<li><code>short</code>: Đặt trước kiểu int để đặt kiểu giá trị số nguyên, với khoảng biểu diễn và khoảng bộ nhớ chiếm chỗ giảm một nửa. Có thể viết&nbsp;<code>short</code>&nbsp;thay vì&nbsp;<code>short int</code>.</li>
	<li><code>long</code>: Sử dụng&nbsp;<code>long long int</code>&nbsp;để đặt kiểu giá trị số nguyên, với khoảng biểu diễn và khoảng bộ nhớ chiếm chỗ tăng gấp đôi. Có thể viết&nbsp;<code>long long</code>&nbsp;thay vì&nbsp;<code>long long int</code>.&nbsp;<code>long int</code>&nbsp;không có khác biệt gì so với&nbsp;<code>int</code>.</li>
</ul>

<h1 id="khoảng-giá-trị-và-bộ-nhớ-chiếm-chỗ-của-các-kiểu-dữ-liệu">Khoảng giá trị và bộ nhớ chiếm chỗ của các kiểu dữ liệu</h1>

<p><em>“Cái đm, lại phải nhớ một đống số nữa à?”</em></p>

<p><img alt="undefined" src="https://cowboycoder.tech/img/uploads/cpp-c%C6%A1-b%E1%BA%A3n-2-1.jpg" /></p>

<p>Thật ra là không. Đúng, khoảng giá trị của các biến là hằng số, nhưng ta không cần phải nhớ một cách máy móc. Lấy ví dụ như kiểu&nbsp;<code>int</code>:</p>

<p>Như chúng ta đã biết, các dữ liệu trong máy tính được lưu trữ bằng dãy bit nhị phân 0 - 1. 8 bit nhị phân thì bằng 1 byte. Cứ&nbsp;210210&nbsp;(1024) byte thì bằng 1 kB,&nbsp;210210&nbsp;kB thì bằng 1 MB, vân vân…&nbsp;<code>int</code>&nbsp;là kiểu dữ liệu số nguyên 4 byte, vậy nên nó sẽ được biểu diễn bằng 32 bit.</p>

<p>Nếu biểu diễn số nguyên bằng cả 32 bit thì sẽ không thể biểu diễn số âm được. Vậy người ta quy ước bit đầu tiên của giá trị&nbsp;<code>int</code>&nbsp;sẽ mang giá trị&nbsp;−231−231, thay vì&nbsp;231231&nbsp;như bình thường. Ví dụ:</p>

<ul>
	<li>Số 7 sẽ được biểu diễn là 0000 0000 0000 0000 0000 0000 0000 0111 (3 bit 1 ở cuối, tổng bằng 7)</li>
	<li>Số 100 sẽ được biểu diễn là 0000 0000 0000 0000 0000 0000 ‭0110 0100‬‬‬</li>
	<li>Số -1 sẽ được biểu diễn là ‭1111111111111111111111111111111111111111111111111111111111111111‬ (tất cả đều là số 1, giá trị bằng&nbsp;−231+230+229+228+…−231+230+229+228+…)‬‬</li>
</ul>

<p>Vậy khoảng giá trị của&nbsp;<code>int</code>&nbsp;là từ&nbsp;−231−231&nbsp;tới&nbsp;231−1231−1.</p>

<p><code>short</code>&nbsp;có kích cỡ bằng một nửa&nbsp;<code>int</code>, vậy nó sẽ chiếm 2 byte, khoảng giá trị là&nbsp;−215−215&nbsp;tới&nbsp;215−1215−1.</p>

<p><code>long</code>&nbsp;có kích cỡ bằng gấp đôi&nbsp;<code>int</code>, vậy nó sẽ chiếm 8 byte, khoảng giá trị là&nbsp;−263−263&nbsp;tới&nbsp;263−1263−1.</p>

<p>Khi các biến dạng số được gắn thêm&nbsp;<code>unsigned</code>, chúng sẽ không biểu diễn số âm nữa, do đó tất cả các bit của chúng đều sẽ được dùng để biểu diễn số nhị phân – việc tính toán khoảng của chúng cũng đơn giản như vậy.</p>

<p>Ta chỉ cần nhớ dữ liệu được lưu trữ bằng bao nhiêu byte, là có thể suy ra khoảng của chúng.</p>

<p>Đối với các kiểu dữ liệu kí tự, kí tự biểu diễn được còn phụ thuộc vào bảng mã chương trình sử dụng.</p>

<p>Các bạn có thể xem kích cỡ và khoảng của các kiểu dữ liệu tại&nbsp;<a href="https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx" target="_blank">đây</a>.</p>

<h2 id="tại-sao-kiến-thức-này-lại-quan-trọng">Tại sao kiến thức này lại quan trọng?</h2>

<p>Đầu tiên, việc biết giới hạn biểu diễn của các kiểu dữ liệu là cực kì quan trọng, để tránh việc thực hiện tính toán tràn khả năng biểu diễn dẫn tới sai sót. Việc thực hiện tính toán trên các kiểu dữ liệu sẽ được đề cập rõ hơn trong các bài viết về toán tử.</p>

<p>Như đã nói trong các bài viết trước, C++ được sử dụng nhiều trong việc lập trình điều khiển phần cứng. Không phải phần cứng nào cũng có nhiều dung lượng bộ nhớ - các thiết bị như đèn nháy, máy giặt làm sao có thể lắp RAM 4 GB như laptop được.</p>

<p>Kể cả khi dung lượng không phải là vấn đề, việc tiết kiệm bộ nhớ của chương trình và đem đến trải nghiệm tốt hơn cho người dùng cũng là một việc nên làm.</p>

<p>Đối với các bạn sử dụng C++ để lập trình thi đấu, việc sử dụng quá nhiều bộ nhớ cũng sẽ gây sinh ra lỗi Memory Limit Exceeded (MLE) và bài làm của các bạn có thể bị đánh fail, vậy nên phải biết cách sử dụng bộ nhớ hợp lý.</p>

<h1 id="khai-báo-biến-trong-c">Khai báo biến trong C++</h1>

<p>Để khai báo biến, ta sử dụng cú pháp:</p>

<pre>
<code>kiểu_dữ_liệu danh_sách_các_biến;
</code></pre>

<p>Ví dụ:</p>

<figure>
<pre>
<code data-lang="c++">int    i, j, k;
char   c, ch;
float  f, salary;
double d;</code></pre>
</figure>

<p>Các biến cũng có thể được gán giá trị khởi tạo bằng cú pháp:</p>

<pre>
<code>kiểu_dữ_liệu tên_biến = giá_trị;
</code></pre>

<p>Ví dụ:</p>

<figure>
<pre>
<code data-lang="c++">int d = 3, f = 5; 
char x = &#039;x&#039;; </code></pre>
</figure>

<p>Giá trị khởi tạo của các biến khi không được người dùng đặt trước sẽ được nói trong một bài khác, tuy nhiên việc tự khởi tạo giá trị cho biến là một việc nên làm, tránh những thay đổi ở bên ngoài chương trình có thể làm giá trị này khác đi.</p>

<h1 id="đặt-giá-trị-cho-biến">Đặt giá trị cho biến</h1>

<p>Sau khi được khai báo, giá trị của biến có thể được thay đổi lại bằng cú pháp:</p>

<pre>
<code>tên_biên = giá_trị;
</code></pre>

<p>Ví dụ:</p>

<figure>
<pre>
<code data-lang="c++">int x;
x = 20;</code></pre>
</figure>

<p>Nếu đặt giá trị cho một biến chưa tồn tại trước đó, trình dịch sẽ báo lỗi.</p>

<h1 id="chương-trình-ví-dụ">Chương trình ví dụ</h1>

<p>Chương trình sau đây sẽ khởi tạo một số biến và in ra giá trị của chúng</p>

<figure>
<pre>
<code data-lang="c++">#include &lt;iostream&gt;
using namespace std;  
int main () {
   // Khai báo biến
   int a, b = 10;
   int c;
   float f;
   // Đặt giá trị cho biến
   a = 10;
   b = 20;
   c = a + b;
   cout &lt;&lt; c &lt;&lt; endl ;

   f = 70.0/3.0;
   cout &lt;&lt; f &lt;&lt; endl ;
   return 0;
}</code></pre>
</figure>

<p>Output:</p>

<pre>
<code>30
23.3333
</code></pre>

<h1 id="viết-tắt-kiểu-dữ-liệu-bằng-typedef">Viết tắt kiểu dữ liệu bằng&nbsp;<code>typedef</code></h1>

<p>Từ khóa&nbsp;<code>typedef</code>&nbsp;cho phép ta đặt cách gọi khác cho một kiểu dữ liệu. Ví dụ, ta muốn sử dụng cách gọi&nbsp;<code>ULL</code>&nbsp;để gọi tên cho kiểu dữ liệu&nbsp;<code>unsigned long long int</code>, ta sử dụng cú pháp:</p>

<figure>
<pre>
<code data-lang="c++">typedef unsigned long long int ULL;</code></pre>
</figure>

<p>Khi đó ta có thể khai báo các biến kiểu&nbsp;<code>unsigned long long int</code>&nbsp;bằng cách sử dụng tên kiểu dữ liệu&nbsp;<code>ULL</code>:</p>

<figure>
<pre>
<code data-lang="c++">ULL x = 1000;</code></pre>
</figure>

<p><br  />
<br  />
<br  />
<em>Phần sau:&nbsp;<a href="http://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-6-bien-global-va-bien-local-98.html" target="_blank">&#91;C++ Cơ bản&#93; Phần 6: Biến global và biến local</a></em></p>
		</div>
				<div id="author">
						<p>
				<strong>Tác giả bài viết:</strong>
				Thanh Sơn
			</p>
						<p>
				<strong>Nguồn tin:</strong>
				cowboycoder.tech
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html" title="&#91;C++ Cơ bản&#93; Phần 5&#x3A; Biến và kiểu dữ liệu">https://tinhocdct.xyz/hoat-dong-chuyen-mon/c-co-ban-phan-5-bien-va-kieu-du-lieu-97.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG
		</div>
		<div id="contact">
			<a href="mailto:webmaster@tinhocdct.xyz">webmaster@tinhocdct.xyz</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://tinhocdct.xyz/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
<script src="https://tinhocdct.xyz/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_is_recaptcha=0;</script>
<script src="https://tinhocdct.xyz/assets/js/language/vi.js"></script>
<script src="https://tinhocdct.xyz/assets/js/global.js"></script>
<script src="https://tinhocdct.xyz/themes/default/js/news.js"></script>
<script src="https://tinhocdct.xyz/themes/default/js/main.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1816161148536198"
     crossorigin="anonymous"></script>
<script src="https://tinhocdct.xyz/themes/default/js/bootstrap.min.js"></script>
</body>
</html>